[英]Java interface method - parameter and return value type as child of Number
I am not very skilled in Java so I consider my question as basic. 我不太熟练Java,所以我认为我的问题很基本。 I am writing an interface for something like ArrayResult. 我正在为ArrayResult之类的编写接口。 There will be methods add and get. 将有添加和获取的方法。
Problem is that ArrayResult can obtain values of Integer or Double. 问题是ArrayResult可以获取Integer或Double的值。 So I need to define methods in interface more generally. 因此,我需要更一般地在接口中定义方法。 I figured out that it is possible to have something like this for get method: 我发现可以为get方法添加如下内容:
public <N extends Number> N get(Integer index);
Is that correct? 那是对的吗? I believe this means that get method can return anything what extends Number Object. 我相信这意味着get方法可以返回扩展Number Object的任何内容。 What sytax to use for add method? add方法使用什么语法?
public void add(Number value);
This is not what I want since add(Integer value) doesnt override the interface method. 这不是我想要的,因为add(Integer value)不会覆盖接口方法。
I guess what you want is 我想你想要的是
interface ArrayResult<N extends Number> {
public N get(Integer index);
public void add(N value);
}
Then you can write two separate specific implementers 然后,您可以编写两个单独的特定实现者
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;
}
}
References: 参考文献:
interface ArrayResult<N extends Number> {
public N get(Integer index);
public void add(N value);
}
Just return Number
. 只需返回Number
。
Number get(Integer index);
This will also allow you to return any Number
descendants like Integer
and Double
. 这也将允许您返回任何Number
后代,例如Integer
和Double
。 In Java parent type can hold any descendant type. 在Java中,父类型可以包含任何后代类型。
Also use integral type int
in getter argument. 还要在getter参数中使用整型int
。
Number get(int index)
Also you can use predefined class like Vector<Number>
with required functionality. 您也可以使用具有所需功能的预定义类,例如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.