A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tcny 中级黑马   /  2014-3-26 17:56  /  990 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如下,为什么不让我限定泛型?我理解的就该是这样的,视频里直接写Person是什么原因呢?
  1. class Person{
  2.         private String name;
  3.         Person(String name){
  4.                 this.name = name;
  5.         }
  6.         public String getName(){
  7.                 return name;
  8.         }
  9. }
  10. class Student extends Person{
  11.         Student(String name){
  12.                 super(name);
  13.         }
  14. }
  15. class Worker extends Person{
  16.         Worker(String name){
  17.                 super(name);
  18.         }
  19. }
  20. class myComparator implements Comparator<T extends Person>{//这里为什么不对?

  21.         @Override
  22.         public int compare(T p1, T p2) {
  23.                 return p1.getName().compareTo(p2.getName());
  24.         }
  25.        
  26. }
  27. public class Demo4 {

  28.         public static void main(String[] args) {
  29.                 TreeSet<Person> ts = new TreeSet<Person>(new myComparator());
  30.                
  31.         }
  32. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 神马都是浮云

查看全部评分

1 个回复

倒序浏览
这么写就对了   ,这么写就实现你想要的了  ,首先T必须首先声明,其次声明了T就不能再次对他限定了
class myComparator <T > implements Comparator<T  extends Person>这也是错的
个人理解,希望对你有帮助。


  1. package aaaa;

  2. import java.util.Comparator;
  3. import java.util.TreeSet;

  4. class Person{
  5.         private String name;
  6.         Person(String name){
  7.                 this.name = name;
  8.         }
  9.         public String getName(){
  10.                 return name;
  11.         }
  12. }
  13. class Student extends Person{
  14.         Student(String name){
  15.                 super(name);
  16.         }
  17. }
  18. class Worker extends Person{
  19.         Worker(String name){
  20.                 super(name);
  21.         }
  22. }
  23. class myComparator <T extends Person> implements Comparator<T>{

  24.         /*@Override
  25.         public int compare(Object object1, Object object2) {
  26.                 // TODO Auto-generated method stub
  27.                 return 0;
  28.         }*///这里为什么不对?

  29.         @Override
  30.         public int compare(T p1, T p2) {
  31.                 return p1.getName().compareTo(p2.getName());
  32.         }
  33.         
  34. }
  35. public class Demo4 {

  36.         public static void main(String[] args) {
  37.                 TreeSet<Person> ts = new TreeSet<Person>(new myComparator());
  38.                
  39.         }
  40. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马