2012-04-05 33 views
2

我想知道它是否可能,如果是這樣的話,如何創建一個構造函數,該變量需要三個變量,但如果最後兩個變量不通過則不會通過錯誤?帶有非必要變量的構造函數

類似:

public void onCreate(Bundle savedInstanceState, String s1<non essential>) 
    { 
+0

你的方法定義只顯示兩個參數 – Rachel 2012-04-05 21:33:37

+0

onCreate()是一個方法,而不是構造函數。鑑於您擁有的簽名,您正在編寫一個Android活動。在這種情況下,您無法更改onCreate的參數列表,您必須保持它與獲取它時相同。 – mwengler 2012-04-28 05:04:16

回答

12

創造更多contructors

public MyCreate(Bundle savedInstanceState) 
    { 

public MyCreate(Bundle savedInstanceState, String s1) 
    { 

public MyCreate(Bundle savedInstanceState, String s1, String s2) 
    { 

嘗試在構造函數重載閱讀本article

+1

如果可能的話,使其中一個構造函數成爲「主」構造函數,並讓其他構造函數只是委託給this(savedInstanceState,DEFAULT_S1,DEFAULT_S2 ...)。這樣,如果你的構造函數確實發生了變化,那麼你的代碼更少。 – yshavit 2012-04-05 21:37:26

0

你有多種方式來做到這一點。僅舉幾例:

  • 你可以有不同的簽名多個構造函數(如
    通過dash1e建議)
  • 你可以有變量的類型的列表中選擇所需(或
    對象,如果你想它是完全通用的),並有一個構造函數,該函數接受列表並在存在時使用它的值。
  • 你可以有一個自定義數據模型類來封裝三個
    類型的值要處理和構造
    使用它,
    使得它,這樣,當它的值由
    構造正在取出你的班級,他們是你想要的參數的可選項。
0

我真的很喜歡dash1e's answer最好。 Luis Miguel Serrano有一些很好的附加建議。

另外 - 如果合適的話 - 你可以使用可變參數

public MyCreate(Bundle savedInstanceState, String ... args) 

具有作爲

public MyCreate(Bundle savedInstanceState, String [ ] args) 

同樣的效果是非常相似的路易斯·米格爾·塞拉諾,用列表,但你不不得不去創建列表的麻煩。