2

如果接口定义不使用泛型,是否可以生成接口的实现?我无法控制我需要实现的接口,但想为我的实现抑制“未经检查”的警告。

4

2 回答 2

4

有些问题可以解决,有些则不能。

例如,如果界面如下所示:

interface OldInterface {
    List someMethod();
}

那么当然,你可以通过

class NewClass implements OldInterface {
    public List<String> someMethod() {          // DOES COMPILE.
        ...
    }
}

另一方面,如果界面看起来像

interface OldInterface {
    void someMethod(ArrayList list);
}

那么你对它的编程无能为力。

class NewClass implements OldInterface {
    public void someMethod(ArrayList<String> list) { // DOES NOT COMPILE.
        ...
    }
}

这就是所谓的不可避免的泛型类型问题。幸运的是,至少在 Eclipse 中,这些警告可以通过选中Ignore unavoidable generic type questions来抑制

Windows > 首选项 > Java > 编译器 > 错误/警告

于 2012-07-18T06:43:29.273 回答
0

覆盖时总是可以限制返回值,它被称为协变返回类型。添加泛型元素就是这样。

否则,如前所述,不允许限制参数。重写时,您可以为参数使用更广泛的类型,称为逆变

于 2012-07-18T07:02:48.673 回答