public class Customer<? extends list<String>>  {}和
public class Customer <T extends <List>>{
}中间的T和? 有什么区别,我急。谢谢,解决完就揭帖

解决方案 »

  1.   

    ?是一个通配符,T只是一个字符。
    <? extends list<String>> 与<T extends <List>>在这儿不具有对比性。
    ?在这儿是指该函数可以接受List<?>型参数,而T则指相应函数可以接受List类型或者其子类型的参数。楼主要知道?,就只需知道List<?>的用法。我能作出的解释主这些,待高手补充与纠正。
      

  2.   

    ?是未知类型(unknown type),而T是任何类型。
      

  3.   

    ?是未知类型(unknown type),并使用extends关键词来作限定。
      

  4.   

    下面这句是通不过的:
    GenericFoo<? extends list> foo = new GenericFoo<HashMap>();因为HashMap没有实现list接口,但是下面的是对的:
    GenericFoo<? extends list> foo = new GenericFoo<ArrayList>();
      

  5.   

    我还是没明白,
    public class Customer<? extends list<String>>  {
    }

    public class Customer <T extends list<String>>{
    }中间的 T 和 ? 有什么区别
    我个人认为我都能把它理解成 接受实现或继承list<String> 了的子类,没有区别呀。请高手讲解,谢谢。
      

  6.   

    楼主到
    http://zhidao.baidu.com/question/13773222.html
    看看吧
    范型讲得很详细
      

  7.   

    中间的 T 和 ? 有什么区别
    我个人认为我都能把它理解成 接受实现或继承list<String> 了的子类,没有区别呀。请高手讲解,谢谢。我同意楼主的看法,没有区别。