「こんにちは、アミーゴ!」
「すでにご存知のとおり、匿名内部クラスはコンストラクターを持つことができません。」
「そうですね。あまり便利ではありません。コンストラクターは本当に重要です。」
「よく言われるように、本気で望めば不可能なことはない。」
「静的変数には静的コンストラクターはありませんが、静的初期化子、つまり静的ブロックが存在することを覚えておいてください。」
「はい、覚えています。」
「匿名の内部クラスは、静的でないことを除いて、まったく同じ初期化子を持ちます。」
例
class Car {
public ArrayListcreatePoliceCars(int count) { ArrayList result = new ArrayList(); for(int i = 0; i < count; i++) { final int number = i; result.add(new Car() { int policeNumber; { policeNumber = number; } }); } return result; }
}
「今回は、匿名の内部クラス コードを赤で強調表示し、その初期化子 (実際にはコンストラクター) を紫で強調表示しました。「コンストラクター」には本体がありますが、メソッド シグネチャはありません。
期待 | 現実 |
---|---|
|
|
「そのようなクラス内で変数を宣言し、イニシャライザで初期化できます。」
「素晴らしいですね、制限が大幅に減りました。」
「これで、私たちは内部クラスについて知ることができました。気に入っていただければ幸いです。」
「たくさんあります。キム、リシ、そして特にあなた、エリーからのレッスンは本当に一流でした。」
「なんて優しい話し方なんだ! 続けて…」
GO TO FULL VERSION