このページからJavaの列挙例について読んでいました。
最初の例で、私が理解できなかった唯一の部分static
は、コードのこの部分でのキーワードの使用です。
private static final List<Card> protoDeck = new ArrayList<Card>();
// Initialize prototype deck
static {
for (Suit suit : Suit.values())
for (Rank rank : Rank.values())
protoDeck.add(new Card(rank, suit));
}
public static ArrayList<Card> newDeck() {
return new ArrayList<Card>(protoDeck); // Return copy of prototype deck
}
protoDeck が宣言されているのはなぜstatic
ですかfinal
? その後、静的ループを使用して protoDeck を初期化します。オブジェクトのインスタンス間で値を保持する静的変数について知っています。ただし、これはシングルトン クラス (プライベート コンストラクター) であるため、インスタンス化できません。
では、上記のようにすることの利点は何ですか?proteDeck がそうでない場合、どのような意味がstatic
ありfinal
ますか?