无法利用对象-java.lang.NullPointerException错误

无法利用对象-java.lang.NullPointerException错误,java,Java,我试图利用一个类,它使用另外三个类作为数据字段。不幸的是,试图获取嵌套对象的值似乎不起作用 这是用于测试类的主程序: public class EmployeeTest { public static void main( String [] args ) { String name1 = "John"; String name2 = "Smith"; String street = "12 Street"; String state = "MA";

我试图利用一个类,它使用另外三个类作为数据字段。不幸的是,试图获取嵌套对象的值似乎不起作用

这是用于测试类的主程序:

public class EmployeeTest
{
public static void main( String [] args )
    {
    String name1 = "John";
    String name2 = "Smith";
    String street = "12 Street";
    String state = "MA";
    String city = "Boston";
    String zip = "50312";
    int day = 12;
    int month = 12;
    int year = 2001;
    Employee employee1 = new Employee( name1, name2, street, city, state, zip, month, day, year );

    System.out.println("Employee's name is " + employee1.GetName1());
    }
}
这是所创建对象的类:

public class Employee
{
private Name name;
private Address address;
private Date date;
// define data fields

public Employee( String name1, String name2, String street, String city, String state, String zip , int month, int day, int year)
    {
    Name name = new Name( name1 , name2 );
    Address address = new Address( street, city, state, zip);
    Date date = new Date();
    date.setDate( month , day, year );
    }
// constructor

public String GetName1()
    {
    String name1 = name.GetFirstName();
    return name1;
    }
// first name getter

public String GetName2()
    {
    String name2 = name.GetLastName();
    return name2;
    }

public String GetStreetName()
    {
    String street = address.GetStreet();
    return street;
    }
// street getter

public String GetCityName()
    {
    String city = address.GetCity();
    return city;
    }
// street getter

public String GetStateName()
    {
    String state = address.GetState();
    return state;
    }
// street getter

public String GetZipCode()
    {
    String zip = address.GetZip();
    return zip;
    }
// street getter

public String GetDate()
    {
    String time = date.getDateString();
    return time;
    }
}
这是可能是null异常源的类:

public class Name
{
private String FirstName;
private String LastName;
// define data fields

public Name( String name1 , String name2 )
    {
    FirstName = name1;
    LastName = name2;
    }
// constructor

public String GetFirstName()
    {
    return FirstName;
    }
// get first name

public String GetLastName()
    {
    return LastName;
    }
// last name getter

public void SetFirstName( String name1 )
    {
    FirstName = name1;
    }
// first name setter

public void SetLastName( String name2 )
    {
    LastName = name2;
    }
// last name setter
}
不可避免地,使用Employee类似乎会产生以下错误:

Exception in thread "main" java.lang.NullPointerException
at Employee.GetName1(Employee.java:22)
at EmployeeTest.main(EmployeeTest.java:16)

是否可以确定,我在类聚合方面做错了什么?

Employee
中,constructor
name
是局部变量

Name Name=新名称(名称1、名称2)

将其更改为:

name=新名称(名称1、名称2)


因此实例变量
name
将被初始化

在此处删除类名:

Name name = new Name( name1 , name2 );
因为您没有在这里设置类的name变量,所以您只是在重新创建一个新变量,所以另一个变量保持为null

因此,它应该是:

name = new Name( name1 , name2 );

地址和日期变量也存在同样的问题。

您有此错误
java.lang.NullPointerException
,因为您应该在
Employee
的构造函数中创建
Name
的距离,例如:

    public Employee(String name1, String name2, String street, String city,
        String state, String zip, int month, int day, int year) {
     name = new Name(name1, name2);
不是:


为什么在调试程序时人们不想使用调试器?这将是微不足道的检查和修复这种方式。
    public Employee(String name1, String name2, String street, String city,
        String state, String zip, int month, int day, int year) {
     Name name = new Name(name1, name2);