繁体   English   中英

Java接口方法-参数和返回值类型为Number的子代

[英]Java interface method - parameter and return value type as child of Number

我不太熟练Java,所以我认为我的问题很基本。 我正在为ArrayResult之类的编写接口。 将有添加和获取的方法。

问题是ArrayResult可以获取Integer或Double的值。 因此,我需要更一般地在接口中定义方法。 我发现可以为get方法添加如下内容:

public <N extends Number> N get(Integer index);

那是对的吗? 我相信这意味着get方法可以返回扩展Number Object的任何内容。 add方法使用什么语法?

public void add(Number value);

这不是我想要的,因为add(Integer value)不会覆盖接口方法。

我想你想要的是

interface ArrayResult<N extends Number> {
    public N get(Integer index);

    public void add(N value);
}

然后,您可以编写两个单独的特定实现者

class IntegerResult implements ArrayResult<Integer> {
    @Override
    public void add(Integer value) {
    }

    @Override
    public Integer get(Integer index) {
        return null;
    }
}

class DoubleResult implements ArrayResult<Double> {
    @Override
    public void add(Integer value) {
    }

    @Override
    public Double get(Double index) {
        return null;
    }
}

参考文献:

interface ArrayResult<N extends Number> {
    public N get(Integer index);

    public void add(N value);
}

只需返回Number

Number get(Integer index);

这也将允许您返回任何Number后代,例如IntegerDouble 在Java中,父类型可以包含任何后代类型。

还要在getter参数中使用整型int

Number get(int index)

您也可以使用具有所需功能的预定义类,例如Vector<Number>

public Vector<Number> myfunction() {

     Vector<Number> ans = new Vector<Number>();
     ans.add(new Integer(1));
     ans.add(new Double(3.14));

     return ans;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM