2013-07-31 52 views

回答

7

假设你有

public class SuperType { 
} 

public class SubType extends SuperType { 
} 

,并使用TestClass<SubType>你的代码变得

public class TestClass<SubType> { 

    public void doSomething() { 
     List<SubType> list = new ArrayList<SubType>(); 
     list.add(new SuperType()); 
    } 
} 

这有错误,因为new SuperType()不够具体。它必须至少是SubType

4

该类型仅适用于子类SuperType,但不适用于SuperType本身。而是使用

List<SuperType> list = new ArrayList<SuperType>(); 
list.add(new SuperType()); 
0

类型只是用来表达它可以什么都类型,在你的情况下,可以anytype类型是超类型和超类型本身的一个子类。

感谢

4

你应该有行得到的东西OF-

超无法通过方法调用转换为执行使用类型声明被转换至T

含义是无效的。

当你说 -

T extends SuperType 

你实际上是说,参数可以是超或你超的任何亚型。

应该是─

List<SuperType> list = new ArrayList<SuperType>(); 
相关问题