2014-04-14 366 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

相關問題