2011-09-10 24 views
2

私はこれが何を意味するのか理解するトラブルを抱えている、それがコード化された方法クラスの概念

Foo number = Foo.NUMBER; 

と同様に、Fooのは静的なものを持つクラスですか?

(これは、それは「あなたがこのようなソリューションを構築することがあります」と述べ割り当てに投稿されました)

+3

のように、。それは私の列挙型のコードのように見えます。 –

+1

@Hovercraft Full of Eels、+1そして、enumはデフォルトで静的です。 :D – mre

+0

@mre:確かに彼らは!価値のない+1のバックアチャ! :D –

答えて

2

NUMBERはFooのオブジェクトを返すFooクラスのstatic(およびfinal)メンバーです。 java.awt.Colorクラスを見てください。

+0

なぜFoo番号=新しいFoo()なのか? – bb2

+0

@ bb2の場合、 'Number'は静的インスタンスになります。 – mre

+0

@ bb2 java.awt.Colorを使用すると、** new **キーワードを使用してオブジェクトを作成したり、定義された静的フィールドからインスタンスを直接取得したりすることができます。 – adatapost

0

はい、あなたの言うとおりです。 Fooはクラスまたはプリミティブ型でなければならず、クラスFooにはNUMBERという静的変数が必要です。この変数は一般にアクセス可能です。ここで

2
class Foo { 
    public static final Foo NUMBER = new Foo(); 
} 
//later... 
Foo number = Foo.NUMBER; 
0
class Foo { 
    public static Foo NUMBER = new Foo(); //might be final too... 
    public Foo { 
    // init Foo instance 
    } 
} 

あなたが投稿したコードの行をコンパイルすることができますクラス定義の一例です。 Fooは、NUMBERという名前で識別されるタイプFooの静的メンバーを持つクラスです。

1

@Hovercraftはコメントで指摘したように、それはこの構文は(おそらく?)列挙型を参照することができることは注目に値します:おそらく

public enum Foo { NUMBER } 

Foo number = Foo.NUMBER;