当前位置: 代码迷 >> J2SE >> [帖] 大神 请看 小弟我这里 是哪里出现的异常 集合有关问题
  详细解决方案

[帖] 大神 请看 小弟我这里 是哪里出现的异常 集合有关问题

热度:610   发布时间:2016-04-23 19:45:52.0
[求助帖] 大神 请看 我这里 是哪里出现的错误 集合问题
package cn.loveay.Generic_泛型;

import java.util.Iterator;
import java.util.TreeSet;

import cn.loveay.Main.Person;
import cn.loveay.Main.Student;
import cn.loveay.Main.Worker;

public class GenericDemo3 {

public static void main(String[] args) {
// TODO 自动生成的方法存根
TreeSet<Person> per=new TreeSet<Person>();
TreeSet<Worker> wor=new TreeSet<Worker>();
TreeSet<Student> stu=new TreeSet<Student>();

per.add(new Person("12",12));
per.add(new Person("13",13));
per.add(new Person("14",14));

wor.add(new Worker("12",12));
wor.add(new Worker("13",13));
wor.add(new Worker("14",14));

stu.add(new Student("12",12));
stu.add(new Student("13",13));
stu.add(new Student("14",14));

ss(per);
ss(wor);
ss(stu);

}

private static void ss(TreeSet<? extends Person> per) {
// TODO 自动生成的方法存根
Iterator<? extends Person> it=per.iterator();

while (it.hasNext()) {
Person person = it.next();
person.show();
}

}

}


package cn.loveay.Main;

public class Person implements Comparable{
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}

public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
// TODO 自动生成的构造函数存根
}
public void show(){
System.out.println("Person"+name+":"+age+"\t");
}

public boolean equals(Object obj) {
// TODO 自动生成的方法存根

Person p=(Person)obj;

return this.name.equals(p.name)&&this.age==p.age;
}

public int hashCode() {
// TODO 自动生成的方法存根
return name.hashCode()+age;
}
public int compareTo(Object obj) {
// TODO 自动生成的方法存根
Person p=(Person)obj;

int t=this.age-p.age;

return t==0?this.name.compareTo(p.name):t;
}



}


package cn.loveay.Main;

public class Worker extends Person {
private String name;
private int age;
public Worker(String name2, int age2) {
this.name = name2;
this.age = age2;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public void show(){
System.out.println("Worker"+name+":"+age+"\t");
}


}


这些 代码 编译时期 没有任何问题  
运行的时候 就出现了 问题
Exception in thread "main" java.lang.NullPointerException
at cn.loveay.Main.Person.compareTo(Person.java:50)
at java.util.TreeMap.compare(Unknown Source)
at java.util.TreeMap.put(Unknown Source)
at java.util.TreeSet.add(Unknown Source)
at cn.loveay.Generic_泛型.GenericDemo3.main(GenericDemo3.java:22)
------解决思路----------------------
空引用错误,在第22行
  相关解决方案