[問題] 關於final以及Anonymous Class的問題

看板java作者 (殺人貓™)時間15年前 (2011/03/12 11:35), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/1
其實Anonymous Class裡面吃外部變數只能吃final這點滿困擾我的 例如說 final boolean isCorrect = true; something(new OnSomethingHappenedListener(){ void onErrorHappened(Exception e) { isCorrect = false; //這樣當然不行 }}); if(isCorrect == false) //do some error handling 所以我只好自己寫了一組wrapper避開這種情形 public class ObjectWrapper<T> { @SuppressWarnings("unchecked") T mTargetObject = (T) new Object(); public ObjectWrapper(T value) { mTargetObject = value; } public T getValue() { return mTargetObject; } public void setValue(T value) { mTargetObject = value; } } 使用起來大概長這樣 final ObjectWrapper<Boolean> isCorrect = new ObjectWrapper<Boolean>(true); something(new OnSomethingHappenedListener(){ void onErrorHappened(Exception e) { isCorrect.setValue(false); }}); if(isCorrect.getValue() == false) //do some error handling 不過我相信java應該有原生的方法(或者像我剛剛做的generic class)有支援 這種需求?請問大家有類似的訊息嗎 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.127.154

03/12 12:07, , 1F
怎不對OnSomethingHappenedListener包裝??
03/12 12:07, 1F

03/12 12:36, , 2F
因為我們可能會用很多個listener, 然後其中一個回傳
03/12 12:36, 2F

03/12 12:38, , 3F
錯誤的話就要停止掉其他的動作 ._./
03/12 12:38, 3F

03/12 16:51, , 4F
試著不採AnonymousClass寫寫看去設想isCorrect適合擺哪裡
03/12 16:51, 4F

03/13 12:27, , 5F
在做listener之前把所有的listener丟到observer裡面...
03/13 12:27, 5F

03/13 12:29, , 6F
有出錯了.. observer來關??
03/13 12:29, 6F

03/13 13:33, , 7F
有些3rd listener不是observerable... 不過這倒是可以改
03/13 13:33, 7F

03/13 13:34, , 8F
3rd party lib listener 不過這是可行方向 感恩
03/13 13:34, 8F

03/13 13:36, , 9F
就怕後面的嫌observer pattern麻煩而已 =P
03/13 13:36, 9F
文章代碼(AID): #1DUke4fb (java)