我試圖獲得可能會或可能還沒有被使用如何避免多,如果空語句
int i = myFragment.getId();
,int j = mySecondFragment.getId();
初始化幾個片段的ID。
我的問題:有沒有變得比
if (myFragment != null) {int i = myFragment.getId();}
每個有效另一個片段的ID的清潔劑/更好的辦法?
我試圖獲得可能會或可能還沒有被使用如何避免多,如果空語句
int i = myFragment.getId();
,int j = mySecondFragment.getId();
初始化幾個片段的ID。
我的問題:有沒有變得比
if (myFragment != null) {int i = myFragment.getId();}
每個有效另一個片段的ID的清潔劑/更好的辦法?
您可以使用Google Guava。
當然類似的功能可以由你來實現,但番石榴提供了一些驚人的例子。
例如,假設一個參數可以爲空,我們稱之爲Optional
這個想法是,如果它失敗了,就不接受空值。甚至,爲其定義一個默認值。
public void method(Integer arg){
Optional<Integer> possible = Optional.fromNullable(arg);
Integer myNum = possible.get(); // Throws exception if arg is null
Integer myNum2 = possible.or(0); // returns 0 if arg is null
}
的想法是,你不要讓空獲得通過您的應用程序一定水平,理想會爲它從來沒有得到過去的視圖(或在路上的持久層從DB回) 。
如果這個想法貫穿始終。在業務層的核心中,您不必擔心空值。
還有許多其他的東西,你可以用番石榴做的,如果你決定按照我的建議,一定要充分利用它:)
這可能是我正在尋找的東西,但有一點麻煩將其轉化爲手頭的問題。所以'myFragment'在這裏是可能的'null'值,但是我需要它的id或者0。所以我假設'可選
在這種情況下,您不使用'get','get'將返回正確的值或者如果爲null,則快速失敗,在這種情況下,您需要使用'opFragment.or(0)' – 2013-03-28 11:07:11
如果它的東西,你做了很多,那麼你可以做一個函數那爲你做檢查。因此,而不是鍵入
if (myFragment != null) {int i = myFragment.getId();}
所有的時間,你可以不喜歡
public ID getFragmentId(Fragment myFragment){
if (myFragment != null) {
return myFragment.getId();
} else {
return someDefaultValue;
}
}
然後就叫
i = getFragmentID(myFragment);
避免了大量的repetetive打字,將讓你的代碼位清晰。
看看這個問題:http://stackoverflow.com/questions/271526/avoiding-null-statements-in-java?rq=1 – 2013-03-27 17:59:49
你可以顯示代碼以及你正在嘗試使用它嗎?我無法告訴他最好的方式是用那麼多的信息。 – Rarw 2013-03-27 18:01:59
根據你對id做什麼,你可以用一個虛擬的實現(一個singleton也許)替換空片段,它總是返回一個無效的id或者一個不會改變結果的id。假設你想添加所有的ID。然後你可以讓DummyFragment擴展Fragment和getID(){return 0; }。這樣,你有多少個0結果是一樣的。 – 2013-03-27 18:11:32