1

我对Java不是很熟练,所以我认为我的问题是基本的。我正在为 ArrayResult 之类的东西编写一个接口。会有方法add和get。

问题是 ArrayResult 可以获取 Integer 或 Double 的值。所以我需要更一般地在接口中定义方法。我发现get方法可以有这样的东西:

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

那是对的吗?我相信这意味着 get 方法可以返回任何扩展数字对象的东西。add 方法使用什么语法?

public void add(Number value);

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

4

3 回答 3

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;
    }
}

参考:

于 2012-10-28T11:16:32.197 回答
2
interface ArrayResult<N extends Number> {
    public N get(Integer index);

    public void add(N value);
}
于 2012-10-28T11:18:42.570 回答
0

刚回来Number

Number get(Integer index);

这也将允许您返回任何Number后代,例如Integerand Double。在 Java 中,父类型可以容纳任何后代类型。

int在 getter 参数中也使用整数类型。

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;

}
于 2012-10-28T11:30:30.920 回答