2014-04-14 167 views
0

得到这个例外在运行下面的程序异常线程 “main” 显示java.lang.NullPointerException

Exception in thread "main" java.lang.NullPointerException 
    at pojo.Bill.main(Bill.java:20) 
Java Result: 1 

Bill.java

public class Bill { 
    public static void main(String s[]){ 
     Bill b=new Bill(); 
     b.getBillDetails().setBillNo(444);// line 20 
     System.out.println("bill no "+ b.getBillDetails().getBillNo()); 
    } 

    private BillAction billDetails; 

    public BillAction getBillDetails() { 
     return billDetails; 
    } 

    public void setBillDetails(BillAction billDetails) { 
     this.billDetails = billDetails; 
    } 

在BillAction有billNo 的getter和setter如何解决此问题。

+1

你认为这个'b.getBillDetails()'做了什么或应该做什么?你为什么这么认为? –

+0

“Bill”中的billDetails未初始化。 – SudoRahul

+0

如果应用程序在创建新Bill时需要一个空的BillAction,则需要在Bill的构造函数中初始化BillAction变量。您正在获得NPE,因为变量'billDetails'目前为空。 –

回答

2

billDetails未初始化。你正在调用它的方法。 所以每当你是在“空”调用方法你会得到空指针异常

这样做,private BillAction billDetails= new BillAction();

3

您是否在初始化BillActionBill对象。默认情况下,实例变量设置为null。所以在BillAction上调用方法将导致NullPointerException

您需要重写默认的构造函数,并确保在此初始化BillAction属性。或者按照桑杰在他的回答中提到的那样简单地初始化它。

0

您有默认的构造函数,你是不是初始化billDetails。所以当你调用getBillDetails()时,你会得到null

相关问题