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

时间:2012-10-28 11:13:06

标签: java oop interface

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

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

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

这是对的吗?我相信这意味着get方法可以返回任何扩展Number Object的东西。用于添加方法的sytax是什么?

public void add(Number value);

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

3 个答案:

答案 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);

这也可让您返回NumberInteger等所有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;

}