日期:2014-05-20  浏览次数:20760 次

一个简单的问题,关于Date类
编译的时候总是在getHireDay函数出出错,求教

import   java.util.GregorianCalendar;
import   java.util.Date;
/**
  *
  *   @author   Administrator
  */
public   class   _Employee   {        
                  /**   Creates   a   new   instance   of   _Employee   */
                public   _Employee(String   name,   double   salary,   int   year,   int   month,   int   day)
{
_name=name;
_salary=salary;
Date   _hireDay=(new   GregorianCalendar(year,month-1,day)).getTime();
}

//propertises
public   String   getName(){return   _name;}
                public   double   getSalary(){return   _salary;}
                public   void   getHireDay()
                {
                        System.out.println(_hireDay.toString());
                }
                             
//fields
private   String   _name;
private   double   _salary;
private   Date   _hireDay;

       
}

------解决方案--------------------
编译出错?还是运行时出错?
在你的构造函数中:
Date _hireDay=(new GregorianCalendar(year,month-1,day)).getTime();
这句应该去掉 Date 吧?
------解决方案--------------------
Date _hireDay=(new GregorianCalendar(year,month-1,day)).getTime();

已经定义过了,不需要Date了
------解决方案--------------------
不去掉那个Data,就出现同名隐藏勒,类成员的那个_hireDay是空指针,当然有异常。
------解决方案--------------------
楼上的两位正确。
因为你在构造方法里又定义了一个局部的_hireDate变量,因此,它覆盖了类实例变量_hireDate,也就是说,在构造方法中并没有初始化类实例变量_hireDate,所以当你调用getHireDate时,会抛出空指针异常