是否可以将泛型添加到Java中非泛型接口的实现中?

是否可以将泛型添加到Java中非泛型接口的实现中?,java,generics,java-6,Java,Generics,Java 6,如果接口定义不使用泛型,是否可以泛化接口的实现?我无法控制需要实现的接口,但希望禁止对我的实现发出“未检查”警告。有些问题可以解决,有些问题无法解决 例如,如果接口如下所示: interface OldInterface { List someMethod(); } 当然,你可以通过 class NewClass implements OldInterface { public List<String> someMethod() { // DOES

如果接口定义不使用泛型,是否可以泛化接口的实现?我无法控制需要实现的接口,但希望禁止对我的实现发出“未检查”警告。

有些问题可以解决,有些问题无法解决

例如,如果接口如下所示:

interface OldInterface {
    List someMethod();
}
当然,你可以通过

class NewClass implements OldInterface {
    public List<String> someMethod() {          // DOES COMPILE.
        ...
    }
}
那么在编程方面你就无能为力了

class NewClass implements OldInterface {
    public void someMethod(ArrayList<String> list) { // DOES NOT COMPILE.
        ...
    }
}
class NewClass实现了OldInterface{
public void someMethod(ArrayList list){//未编译。
...
}
}
这就是我们所说的。幸运的是,至少在Eclipse中,通过选中“忽略不可避免的泛型类型问题”,可以抑制这些警告


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

有些问题可以解决,有些问题无法解决

例如,如果接口如下所示:

interface OldInterface {
    List someMethod();
}
当然,你可以通过

class NewClass implements OldInterface {
    public List<String> someMethod() {          // DOES COMPILE.
        ...
    }
}
那么在编程方面你就无能为力了

class NewClass implements OldInterface {
    public void someMethod(ArrayList<String> list) { // DOES NOT COMPILE.
        ...
    }
}
class NewClass实现了OldInterface{
public void someMethod(ArrayList list){//未编译。
...
}
}
这就是我们所说的。幸运的是,至少在Eclipse中,通过选中“忽略不可避免的泛型类型问题”,可以抑制这些警告


Windows>Preferences>Java>Compiler>Errors/Warnings

重写时始终可以限制返回值,这称为共变量返回类型。添加泛型元素就是这样


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

重写时始终可以限制返回值,称为协变量返回类型。添加泛型元素就是这样

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