2012-07-18 49 views

回答

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

这就是所谓的unavoidable generic type problem。幸运的是,这些警告被抑制,至少在Eclipse中,通过检查忽略不可避免的通用类型问题

窗口>首选项>的Java>编译器>错误/警告

0

限制的返回值始终是可能的当重写时,它被称为协变式返回类型。添加一个泛型元素就是这样。

否则,如前所述,限制参数是不允许的。重写时,可以使用更宽的类型作为参数,它被称为contra-variance