为什么我得到一个AWT Eventqueue Null指针异常?

时间:2014-08-08 00:57:55

标签: java swing pointers exception

            Employee emp = null;



            int searchVal1 = (StringUtils.isNotBlank(tab2textField.getText())) ? Integer.parseInt(tab2textField.getText()) : 0;


            String searchVal2 = tab2textField2.getText();
            String searchVal3 = tab2textField3.getText();

            ArrayList<Employee> arraylist = null;
            ArrayList<Employee> finalarraylist = null;





            //add to a new arraylist

            try
            {
             FileInputStream fin = new FileInputStream("employeeal.ser");
             ObjectInputStream in = new ObjectInputStream(fin);

             arraylist = (ArrayList) in.readObject();

             Iterator<Employee> it = arraylist.iterator();
             while(it.hasNext())
             {
                emp = it.next();

                System.out.println("First Name: " + emp.getFname());
                System.out.println("Last Name: " + emp.getLname());
                System.out.println("ID: " + emp.getId());

                int intval = emp.getId();
                String stringf = emp.getFname();
                String stringl = emp.getLname();

                //if(emp.getId() == searchVal1 || emp.getFname() == searchVal2 || emp.getLname() == searchVal3)
                //if((emp.getId() == searchVal1) || (emp.getFname()) == "a") || (emp.getLname() == "a"))
                if(emp.getId() == searchVal1 || (emp.getFname()).equals(searchVal2) || (emp.getLname()).equals(searchVal3))
                {
                    //finalarraylist.add(emp);

                    //finalarraylist.add(new Employee(emp.getId(), emp.getFname(), emp.getLname()));

                    finalarraylist.add(new Employee(intval, stringf, stringl));

                    System.out.println("added");
                }
                else
                {
                    System.out.println("NOT added!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                }

             }

             in.close();
             fin.close();
            }catch(IOException e)
            {
             e.printStackTrace();

            }catch(ClassNotFoundException e2)
            {
             System.out.println("Class not found");
             e2.printStackTrace();

            }

所以我试图从另一个列表中列出一个列表,但是当我到达这一行时:

                    finalarraylist.add(new Employee(intval, stringf, stringl));

它崩溃并且说空指针,但是一个arraylist没有固定的存储空间,所以我不知道为什么我得到一个空指针异常。

First Name: rewer
Last Name: erw
ID: 2342
NOT added!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
First Name: hue
Last Name: huer
ID: 34343
NOT added!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
First Name: hueer
Last Name: huer
ID: 34343
NOT added!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
First Name: hueer
Last Name: huer
ID: 34343565
NOT added!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
First Name: a
Last Name: a
ID: 1

这是输出。它在打印之前崩溃了,并且添加了#34;。

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at TextField.actionPerformed(Test.java:676)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6527)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6292)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4883)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4705)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:719)
at java.awt.EventQueue$4.run(EventQueue.java:717)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

1 个答案:

答案 0 :(得分:2)

快速查看代码......

ArrayList<Employee> finalarraylist = null;
//...
// finalarraylist still null...
try
{
    //...
    // finalarraylist still null
    while(it.hasNext())
    {
        //...
        // finalarraylist still null
        if(emp.getId() == searchVal1 || (emp.getFname()).equals(searchVal2) || (emp.getLname()).equals(searchVal3))
        {
            //...
            // finalarraylist still null
            finalarraylist.add(new Employee(intval, stringf, stringl));

在声明finalarraylist和尝试使用if之间,你实际上从未创建过它的实例......

如果你遇到这个问题就会进行两分钟的调试。这是发现IDE(以及Java的)调试器的强大功能......