Java 为什么在尝试访问对象时出现空指针异常?

Java 为什么在尝试访问对象时出现空指针异常?,java,object,nullpointerexception,accessor,Java,Object,Nullpointerexception,Accessor,我只是试图从主驱动程序类访问一个包含员工信息的静态对象。但是,当我尝试使用它的getter方法执行此操作时,我从另一个类获取旧员工信息数据 线程awt事件中出现异常que zero java.lang空指针异常 我在主驱动程序中使用这行代码来实例化GUI以输入员工详细信息 guiEmployee1 theGuiEmployee = new guiEmployee1(); 这是另一个类,允许用户输入所有员工数据,然后使用此信息创建一个新的员工对象 我在驱动程序中使用这个方法来访问我刚才制作的GU

我只是试图从主驱动程序类访问一个包含员工信息的静态对象。但是,当我尝试使用它的getter方法执行此操作时,我从另一个类获取旧员工信息数据

线程awt事件中出现异常que zero java.lang空指针异常

我在主驱动程序中使用这行代码来实例化GUI以输入员工详细信息

guiEmployee1 theGuiEmployee = new guiEmployee1();
这是另一个类,允许用户输入所有员工数据,然后使用此信息创建一个新的员工对象

我在驱动程序中使用这个方法来访问我刚才制作的GUI中getter的数据

public void addInfoToSystem()
{
    System.out.println("about to add data to system");
    Employee aEmployee = theGuiEmployee.getEmployee();
}
这是一个完整的gui employee类,它允许用户输入employee数据并创建我刚才提到的新employee对象。它包含getter方法

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

public class guiEmployee1 extends JFrame
{
    private static Employee theEmployee;

    private String fName;
    private String sName;
    private String gender;
    private String pLevel;
    private String empIDnumber;
    private int dPayLevel, i=0;

    JTextField employeeDetails1;
    JTextField employeeDetails2;
    JTextField employeeDetails3;    
    JTextField employeeDetails4;
    JTextField employeeDetails5;

    private static ArrayList<Employee> allEmployees = new ArrayList<Employee>();

    public guiEmployee1()
    {
        JButton submit;
        JButton b1;

        System.out.println("cabanas");

        JFrame frame = new JFrame();

        employeeDetails1 = new JTextField(10);
        employeeDetails2 = new JTextField(10);
        employeeDetails3 = new JTextField(10);
        employeeDetails4 = new JTextField(10);
        employeeDetails5 = new JTextField(10);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(new Dimension(320, 75));
        frame.setTitle("Employee Details");

        frame.setLayout(new FlowLayout());

        frame.add(new JLabel("Please enter Employees first Name: "));
        frame.add(employeeDetails1);
        ButtonListenerDepName listener = new ButtonListenerDepName();

        frame.add(new JLabel("Please enter Employees Last Name: "));
        frame.add(employeeDetails2);
        ButtonListenerDepName1 listener1 = new ButtonListenerDepName1();

        frame.add(new JLabel("Please enter Employees Gender: "));
        frame.add(employeeDetails3);
        ButtonListenerDepName2 listener2 = new ButtonListenerDepName2();

        frame.add(new JLabel("Please enter Employees Pay Level: "));
        frame.add(employeeDetails4);
        ButtonListenerDepName4 listener4 = new ButtonListenerDepName4();

        frame.add(new JLabel("Please enter Employees ID Number: "));
        frame.add(employeeDetails5);
        empIDnumber = employeeDetails5.getText();

        createNewDepartment listener5 = new createNewDepartment();

        b1 = new JButton("Submit");

        b1.addActionListener(listener5);
        b1.addActionListener(listener4);

        b1.addActionListener(listener2);
        b1.addActionListener(listener1);
        b1.addActionListener(listener);

        frame.add(b1);
        frame.pack();
        frame.setSize(300,300);
        frame.setVisible(true);
    }

    public class ButtonListenerDepName implements ActionListener
    {
        public void actionPerformed (ActionEvent e )
        {
             fName = employeeDetails1.getText();
            System.out.println("and This is the employes first name :"+ fName);         
        }
    }

    public class ButtonListenerDepName1 implements ActionListener
    {
        public void actionPerformed (ActionEvent e )
        {
             System.out.println("and we get to depname1");
             sName = employeeDetails2.getText();
            System.out.println("and This is the emp scnd name :"+ sName);   
        }
    }

    public class ButtonListenerDepName2 implements ActionListener
    {
        public void actionPerformed (ActionEvent e )
        {
             System.out.println("and we get to depname2");
             gender = employeeDetails3.getText();
            System.out.println("and This is the employes gender:"+ gender);         
        }
    }

    public class ButtonListenerDepName3 implements ActionListener
    {
        public void actionPerformed (ActionEvent e )
        {
             System.out.println("and we get to depname3");
             empIDnumber = employeeDetails3.getText();
            System.out.println("and This is the emp id: "+ empIDnumber);    
        }
    }

    public class ButtonListenerDepName4 implements ActionListener
    {
        public void actionPerformed (ActionEvent e )
        {
                System.out.println("and we get to depname4");

                try
                {
                pLevel = employeeDetails4.getText();        
                dPayLevel = Integer.parseInt(pLevel);
                }
                catch (NumberFormatException nfe)
                {
                    pLevel = "-1";
                    dPayLevel = Integer.parseInt(pLevel);
                }

    //      System.out.println("and This is the emp pay level :"+ dPayLevel);   
        }
    }

    public class createNewDepartment implements ActionListener
    {
        public void actionPerformed (ActionEvent e )
        {
            //create a new department and then adds it to thee system
            theEmployee = new Employee(fName, sName, gender, dPayLevel, empIDnumber);

            storageSystem theStorageSystem = new storageSystem();
            theStorageSystem.setEmployee(theEmployee);
            System.out.println("mazel tov they have all been added in the gui employee");
            System.out.println(theEmployee);
        }
    }

    public Employee getEmployee()
    {
        return theEmployee;
    }

    public int getValue()
    {
         i = 1;
        return i;   
    }

}
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
导入java.util.*;
公共类guiEmployee1扩展了JFrame
{
私人静态雇员;
私有字符串fName;
私有字符串sName;
私人字符串性别;
私有字符串pLevel;
私有字符串empIDnumber;
专用整数dPayLevel,i=0;
JTextField employeeDetails1;
JTextField employeeDetails2;
JTextField employeeDetails3;
JTextField employeeDetails4;
JTextField employeedetails 5;
私有静态ArrayList allEmployees=新ArrayList();
公共GUI员工1()
{
JButton提交;
按钮b1;
System.out.println(“cabanas”);
JFrame=新JFrame();
employeeDetails1=新的JTextField(10);
employeeDetails2=新的JTextField(10);
employeeDetails3=新的JTextField(10);
employeeDetails4=新的JTextField(10);
employeeDetails5=新的JTextField(10);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
框架设置尺寸(新尺寸(320,75));
框架。设置标题(“员工详细信息”);
frame.setLayout(新的FlowLayout());
frame.add(新的JLabel(“请输入员工的名字:”);
frame.add(employeeDetails1);
ButtonListenerDepName侦听器=新建ButtonListenerDepName();
frame.add(新的JLabel(“请输入员工姓氏:”);
frame.add(employeeDetails2);
ButtonListenerDepName1 listener1=新建ButtonListenerDepName1();
frame.add(新JLabel(“请输入员工性别:”);
frame.add(employeeDetails3);
ButtonListenerDepName2 listener2=新建ButtonListenerDepName2();
frame.add(新的JLabel(“请输入员工薪酬水平:”);
添加框架(employeeDetails4);
ButtonListenerDepName4 listener4=新建ButtonListenerDepName4();
添加(新的JLabel(“请输入员工ID号:”);
框架。添加(员工详情5);
empIDnumber=employeeDetails5.getText();
createNewDepartment listener5=新建createNewDepartment();
b1=新按钮(“提交”);
b1.addActionListener(listener5);
b1.addActionListener(listener4);
b1.addActionListener(listener2);
b1.addActionListener(listener1);
b1.addActionListener(监听器);
框架。添加(b1);
frame.pack();
框架。设置尺寸(300300);
frame.setVisible(true);
}
公共类ButtonListenerDepName实现ActionListener
{
已执行的公共无效操作(操作事件e)
{
fName=employeeDetails1.getText();
System.out.println(“这是员工的名字:“+fName”);
}
}
公共类ButtonListenerDepName1实现ActionListener
{
已执行的公共无效操作(操作事件e)
{
System.out.println(“然后我们进入depname1”);
sName=employeeDetails2.getText();
System.out.println(“这是emp scnd名称:“+sName”);
}
}
公共类ButtonListenerDepName2实现ActionListener
{
已执行的公共无效操作(操作事件e)
{
System.out.println(“然后我们进入depname2”);
性别=employeeDetails3.getText();
System.out.println(“这是雇员的性别:“+性别”);
}
}
公共类按钮ListenerDepname3实现ActionListener
{
已执行的公共无效操作(操作事件e)
{
System.out.println(“然后我们进入depname3”);
empIDnumber=employeeDetails3.getText();
System.out.println(“这是emp id:”+EMPIDN);
}
}
公共类ButtonListenerDepName4实现ActionListener
{
已执行的公共无效操作(操作事件e)
{
System.out.println(“然后我们进入depname4”);
尝试
{
pLevel=employeeDetails4.getText();
dPayLevel=Integer.parseInt(pLevel);
}
捕获(NumberFormatException nfe)
{
pLevel=“-1”;
dPayLevel=Integer.parseInt(pLevel);
}
//System.out.println(“这是emp薪酬水平:“+dPayLevel”);
}
}
公共类createNewDepartment实现ActionListener
{
已执行的公共无效操作(操作事件e)
{
//创建一个新部门,然后将其添加到电子系统
员工=新员工(姓名、sName、性别、工资水平、员工编号);
storageSystem存储系统=新存储系统();
存储系统。设置员工(员工);
System.out.println(“mazel-tov它们都已添加到gui中”);
System.out.println(雇员);
}
}
公共雇员getEmployee()
{
归还员工;
}
public int getValue()
{