Я пытаюсь использовать класс java BitSet
как поле для настраиваемого класса. И я хочу, чтобы класс использовал 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). Это часто описывается в [anti-patterns] (https://blog.jooq.org/2014/12/08/dont-be-clever-the-double-curly-braces-anti-pattern/) для инициализации вложенной коллекции , Однако способ, которым он вводится здесь, должен быть в порядке. – YoYo