2011-07-17 23 views
-1

C#では、クラス内に静的なvarを宣言できます。例:クラス "foo"のインスタンスを数えます。以下のようなので、JavaのC# "静的変数"と同等

class foo 
{ 
    static int countFoo =0; 

    public foo() 
    { 
     countFoo++; 
    } 
} 

今 - 私は多くのインスタンスが作成されたかを知るためにgetFooCountメソッドを使用することができます作成​​された各fooの。 Javaでどのようにしていますか? 同じことをやろうとしましたが、うまくいきません。 理由と方法を説明してください。ありがとう!

+0

http://tinyurl.com/so-hintsを読んでください - うまくいかないコードがあるときは、それをあなたの質問に含めるべきです。 –

+1

コードを クラスfoo { static int countFoo = 0;}に修正する必要があります。 public foo() { countFoo ++; } } //閉じる部分がありませんこれが問題の可能性があります これはあなたにとって役に立ちます。 – Prabhakantha

+0

このカウンタの実装は明らかにスレッドセーフではありません。 – CodesInChaos

答えて

5

いいえ、あなたは全く同じことをすることができ、となります。サンプルコード:

class Foo 
{ 
    private static int count; 

    Foo() 
    { 
     count++; 
    } 

    static void printCount() 
    { 
     System.out.println(count); 
    } 
} 

public class Test 
{ 
    public static void main(String[] args) 
    { 
     Foo.printCount(); // 0 
     Foo foo1 = new Foo(); 
     Foo foo2 = new Foo(); 
     Foo.printCount(); // 2   
    } 
} 

(あなたがしようとしただろうと何を示したい場合には役立っているだろう...)

1

Javaでは、次の作品(そのスレッドセーフではありませんが)

class Foo { 
    static int countFoo =0; 

    public Foo() { 
     countFoo++; 
    } 
} 

あなたの問題は何ですか?

関連する問題