我对Java不是很熟练所以我认为我的问题是基本的。我正在编写类似ArrayResult的接口。将有方法添加和获取。
问题是ArrayResult可以获取Integer或Double的值。所以我需要更一般地在界面中定义方法。我发现get方法有可能有这样的东西:
public <N extends Number> N get(Integer index);
这是对的吗?我相信这意味着get方法可以返回任何扩展Number Object的东西。用于添加方法的sytax是什么?
public void add(Number value);
这不是我想要的,因为add(整数值)不会覆盖接口方法。
答案 0 :(得分:3)
我想你想要的是
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;
}
}
参考文献:
答案 1 :(得分:2)
interface ArrayResult<N extends Number> {
public N get(Integer index);
public void add(N value);
}
答案 2 :(得分:0)
返回Number
。
Number get(Integer index);
这也可让您返回Number
和Integer
等所有Double
个后代。在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;
}