黑马程序员技术交流社区
标题:
泛型限定问题
[打印本页]
作者:
tcny
时间:
2014-3-26 17:56
标题:
泛型限定问题
如下,为什么不让我限定泛型?我理解的就该是这样的,视频里直接写Person是什么原因呢?
class Person{
private String name;
Person(String name){
this.name = name;
}
public String getName(){
return name;
}
}
class Student extends Person{
Student(String name){
super(name);
}
}
class Worker extends Person{
Worker(String name){
super(name);
}
}
class myComparator implements Comparator<T extends Person>{//这里为什么不对?
@Override
public int compare(T p1, T p2) {
return p1.getName().compareTo(p2.getName());
}
}
public class Demo4 {
public static void main(String[] args) {
TreeSet<Person> ts = new TreeSet<Person>(new myComparator());
}
}
复制代码
作者:
霍振鹏
时间:
2014-3-26 18:25
这么写就对了 ,这么写就实现你想要的了 ,首先T必须首先声明,其次声明了T就不能再次对他限定了
class myComparator <T > implements Comparator<T extends Person>这也是错的
个人理解,希望对你有帮助。
package aaaa;
import java.util.Comparator;
import java.util.TreeSet;
class Person{
private String name;
Person(String name){
this.name = name;
}
public String getName(){
return name;
}
}
class Student extends Person{
Student(String name){
super(name);
}
}
class Worker extends Person{
Worker(String name){
super(name);
}
}
class myComparator <T extends Person> implements Comparator<T>{
/*@Override
public int compare(Object object1, Object object2) {
// TODO Auto-generated method stub
return 0;
}*///这里为什么不对?
@Override
public int compare(T p1, T p2) {
return p1.getName().compareTo(p2.getName());
}
}
public class Demo4 {
public static void main(String[] args) {
TreeSet<Person> ts = new TreeSet<Person>(new myComparator());
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2