为什么会出现Exception in thread "main" java.lang.NullPointerException 的错误? 5

packagepac;importjava.util.*;publicclassCloneTest{publicstaticvoidmain(String[]args){... package pac;

import java.util.*;

public class CloneTest {
public static void main(String[] args) {
try {
Employee original = new Employee("zhang san", 3000);
original.setHireDay(2000, 1, 1);
Employee clone = original.clone();
clone.raiseSalary(10);
clone.setHireDay(2001, 2, 24);
System.out.println("original:" + original);
System.out.println("clone:" + clone);
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
}
}

class Employee implements Cloneable {
Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}

public Date setHireDay(int year, int month, int day) {
GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
Date date = calendar.getTime();
return date;
}
public double raiseSalary(double d){
return salary+salary*d/100;
}
public String toString(){
return "name:"+name+"salary:"+salary+"hireDay"+hireDate;
}
protected Employee clone()throws CloneNotSupportedException{
//call Object.clone();
Employee cloned=(Employee)super.clone();
//clone mutable fields
cloned.hireDate=(Date)hireDate.clone();
return cloned;
}
private String name = "";
private double salary = 0;
private Date hireDate;

}
展开
 我来答
百度网友b8f909b
2012-10-23 · TA获得超过795个赞
知道小有建树答主
回答量:554
采纳率:0%
帮助的人:475万
展开全部
cloned.hireDate=(Date)hireDate.clone();

这句话里面的hireDate你就没有初始化,当然会抛出空指针异常啦。

你setHireDay()里面有初始化你在最后定义的private Date hireDate;吗????
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友12ee0fd
2012-10-23 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:1973万
展开全部
重写后clone的方法签名是 public Object clone() throws CloneNotSupportedException{..}

另外 NPE 一般是没有初始化变量,你在出错的哪里看看哪个变量值是null。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bill_cool2008
2012-10-23 · TA获得超过495个赞
知道小有建树答主
回答量:871
采纳率:0%
帮助的人:199万
展开全部
空指针是因为hireDate没有值,
cloned.hireDate=(Date)hireDate.clone();会抛异常
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幽冥神者
2012-10-23 · TA获得超过3213个赞
知道大有可为答主
回答量:1953
采纳率:50%
帮助的人:1790万
展开全部
hireDate没有初始值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Mr_不服
2012-10-23
知道答主
回答量:33
采纳率:0%
帮助的人:12.9万
展开全部
一般包空指针的异常 你找到报错那一行, 一般都是.前面的东西为空。倒着查一下就能看到哪里为空了 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式