Re: [問題] Class中的大括號

作者: JustinHere (良葛格)   2014-06-26 13:54:36
※ 引述《TonyQ (自立而後立人)》之銘言:
: 一般來說你應該把初始化一個變數成員的行為放在 constructor,
: 但還是有其他兩個方法可以應用,其中一個就是你提到的這個初始化 block。
: 它會把這個 {} 裡面的程式碼放進每個建構子裡面,
: 這樣就可以用來在多個建構子裡面共用程式碼。
: (但我個人是不會建議這麼做就是了。)
有時會在建立匿名類別時使用,作一些初始動作,例如…
Some some = new Some() {
{
setXXX(...);
setOOO(...);
initWhat();
doWho();
}
@Override
public void doOrz() {
....
}
};
之前看過,有個程式庫試著用 .java 作 Configuration 檔案,有個這種作法:
// 隨便亂打的
public class YourConfig extends Configuration {{
route("/some", to("/other"));
default("/orz");
config("what you want", with(something()));
...
you().may()
.want().to().config()
.with().fluent().api(); // XDXDXD
}}
作者: popcorny (畢業了..@@")   2014-06-26 13:58:00
在anonymous class中用就合理了!!
作者: Deltaguita (貝里斯)   2014-06-26 14:41:00
學到了 謝謝!
作者: NullLife (廢材大叔有點累)   2014-06-26 23:58:00
(筆記)
作者: Killercat (殺人貓™)   2014-06-27 17:03:00
這個作delegation/callback很常見 不過我個人實在對這種寫法非常感冒(汗)雖然這是某些framework, 如android的標準作法就是下面那個作法是Builder pattern, 其實通常會接個.create類型的method作為「真正產生動作」的結尾Builder設計也是一個不錯的梗 下次跟大家分享一下

Links booklink

Contact Us: admin [ a t ] ucptt.com