黑马程序员技术交流社区

标题: 泛型限定问题 [打印本页]

作者: tcny    时间: 2014-3-26 17:56
标题: 泛型限定问题
如下,为什么不让我限定泛型?我理解的就该是这样的,视频里直接写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. }
复制代码

作者: 霍振鹏    时间: 2014-3-26 18:25
这么写就对了   ,这么写就实现你想要的了  ,首先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. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2