如何理解 Java 中的 lt;T extends Comparable<
展开全部
如果题干的意思是指理解<T extends Comparable>的话。
T、E、K等一般都涉及泛型的概念。
泛型通俗地说,就是在方法或者类中使用一些变量时,泛化变量的类型,即指定该变量是某一类类型,而不是某一个类型。这里的某一类类型可以具体指定,也可以直接代指,后者的变量类型范围更广。
具体指定就类似题干,指定范围中T这一类型必须继承在Comparable.
而直接代指,就是不指定T是什么类型或属于什么类型。只有在实例化该类型时才具体指定某一个类型。
比如Map<K, V>。在Map代码中可以用K或者V去声明变量,这些变量的类型只有在实例化时才确定。比如Map<String,String> map=new HashMap<String,String>(); 实例化时指定K,V为具体某个类型。
T、E、K等一般都涉及泛型的概念。
泛型通俗地说,就是在方法或者类中使用一些变量时,泛化变量的类型,即指定该变量是某一类类型,而不是某一个类型。这里的某一类类型可以具体指定,也可以直接代指,后者的变量类型范围更广。
具体指定就类似题干,指定范围中T这一类型必须继承在Comparable.
而直接代指,就是不指定T是什么类型或属于什么类型。只有在实例化该类型时才具体指定某一个类型。
比如Map<K, V>。在Map代码中可以用K或者V去声明变量,这些变量的类型只有在实例化时才确定。比如Map<String,String> map=new HashMap<String,String>(); 实例化时指定K,V为具体某个类型。
2018-07-29 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
例如public static <T> void add(List<T> l1,List<? super T> l2){
//那么l2中的元素就只能是泛型T的父类
//例如l1的类型是List<String>
//那么l2中的元素就可以是List<Object>
//因为Object类是String的父类,可以不一定是直接父类,也可能是父类的父类
//而l2就不能设定为List<Integer>,因为Integer不是String的父类。与String没有继承 关系
}
如果该方法是public static <T> void add(List<T> l1,List<? super T> l2){
//那么List<> ,中括号里面指定的元素就只能是T的子类型,与super刚好相反
}
当然,<? super T>和<? extends T>都能指定与T相同的类型,例如两种情况都可以指定l1和l2都为List<String>
//那么l2中的元素就只能是泛型T的父类
//例如l1的类型是List<String>
//那么l2中的元素就可以是List<Object>
//因为Object类是String的父类,可以不一定是直接父类,也可能是父类的父类
//而l2就不能设定为List<Integer>,因为Integer不是String的父类。与String没有继承 关系
}
如果该方法是public static <T> void add(List<T> l1,List<? super T> l2){
//那么List<> ,中括号里面指定的元素就只能是T的子类型,与super刚好相反
}
当然,<? super T>和<? extends T>都能指定与T相同的类型,例如两种情况都可以指定l1和l2都为List<String>
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询