我正在嘗試使用java類BitSet
作爲定製類的字段。我希望班級使用所有位設置的默認位集。對象方法調用可以與對象實例化同時完成嗎?
import java.util.BitSet;
public class MyClass {
private BitSet mask;
public MyClass() {
this(new BitSet(4));
// want to set all bits first
// something like
// this(new BitSet(4).set(0,3));
}
public MyClass(BitSet mask) {
this.mask = mask;
}
}
默認情況下BitSet
構造函數取消所有位。所以在我作爲一個匿名對象發送之前,我想要調用set(int, int)
方法來設置所有位。我知道我可以簡單地將字段mask
初始化爲新的BitSet
,然後從那裏調用set(int, int)
方法。
但是,通常我想知道是否有可能在對象實例化時訪問實例方法?
我非常虛弱的泛型。但以上是我正在尋找的。它很簡潔,還允許我使用'this'運算符。然後我可以在非默認構造函數中使用通用初始化代碼。謝謝! –
您添加的第三個選項。這種方法的術語是什麼,如果有的話? –
它是一個'實例初始化塊',但由於它出現在匿名類的主體中,它看起來好像是一些特殊的語法(不是)。出於這個原因,人們通常將其稱爲['雙大括號'成語](http://stackoverflow.com/questions/1958636/what-is-double-brace-initialization-in-java)。它經常在[反模式](https://blog.jooq.org/2014/12/08/dont-be-clever-the-double-curly-braces-anti-pattern/)中對嵌套的集合初始化進行描述。但是,這裏介紹的方式應該沒問題。 – YoYo