2014-02-22 64 views
1

有人可以解釋這段代碼的作用。例如,第二個聲明是做什麼的?即public static AlertDialogFragment newInstance()這裏:Java:public static newInstance()

public static class AlertDialogFragment extends DialogFragment { 

    public static AlertDialogFragment newInstance() { 
     return new AlertDialogFragment(); 
    } 

回答

1

剛剛創建的AlertDialogFragment一個新實例,並返回。

通常我們在您的情況

AlertDialogFragment adf = AlertDialogFragment.newInstance(); 

見,沒有什麼區別創建instnace像

AlertDialogFragment adf = new AlertDialogFragment(); 

+0

newInstance();有什麼好處; –

0

newInstanse()是一個java.lang.Class方法,它將創建一個指定類類型的新實例。它可以簡單的叫類似於我們做的時候就是我們所說的默認構造函數,

Class instance = new Class(); 

該文檔爲它說:

的java.lang.Class.newInstance()創建該類的一個新實例由此Class對象表示。該類被實例化,就像通過一個帶有空參數列表的新表達式一樣。如果該類尚未初始化,則該類將被初始化。

Source.

2

在Android中,當你的類擴展片段,它需要有一個無參數的構造函數(或者有沒有構造函數的話),但如果你想要的東西設爲片段的每一個對象,當你創建你通過調用

public static class AlertDialogFragment extends DialogFragment { 
    private int value=0; 
    public static AlertDialogFragment newInstance(int value) { 
     AlertDialogFragment instance=new AlertDialogFragment(); 
     instance.value=value; 
     return instance; 
    } 
} 

現在您可以AlertDialogFragment對象:可以做follwing

AlertDialogFragment fragment=AlertDialogFragment.newInstance(10); 

在你的CAS方法並沒有太多實現。