Эквивалент C # "статическая переменная" в Java - PullRequest
0 голосов
/ 17 июля 2011

В C # я могу объявить статическую переменную в классе. Например: посчитать создаваемые экземпляры класса "foo". Вот так

class foo
{
    static int countFoo =0;

    public foo()
    {
        countFoo++;
    }
}

Теперь - для каждого созданного foo я могу использовать метод getFooCount, чтобы узнать, сколько экземпляров было создано. Как вы делаете это в Java? Я пытался сделать то же самое, и это не работает. Пожалуйста, объясните, почему и как. Спасибо!

Ответы [ 2 ]

5 голосов
/ 17 июля 2011

Нет, вы можете сделать то же самое, и оно будет работать .Пример кода:

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 голос
/ 17 июля 2011

Следующее работает в Java (хотя это не потокобезопасно)

class Foo { 
    static int countFoo =0;

    public Foo() {
        countFoo++;
    }
}

В чем конкретно проблема у вас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...