Счётчик объектов

175
20 марта 2018, 01:21

Как создать в конструкторе объекта счётчик, который будет вписывать в поле объекта номер его создания? То есть первый объект имеет номер 1, следующий-- 2...

Answer 1

Попробуйте так

class MyClass {
    private static int counter;
    public MyClass() {
        //...
        counter++;
    }
    public static int getNumOfInstances() {
        return counter;
    }
}

Отсюда

Answer 2
class Counted {
    private static final AtomicInteger COUNTER = new AtomicInteger(1);
    private final int id;
    public Counted() {
        id = COUNTER.getAndIncrement();
    }
    public int getId() {
        return id;
    }
}
public static void main(String... args) {
    System.out.println(new Counted().getId()); //1
    System.out.println(new Counted().getId()); //2
    System.out.println(new Counted().getId()); //3
}

Использование AtomicInteger гарантирует атомарность инкремента и предотвращает различные ошибки при многопоточном использовании.

Answer 3

Используй static переменные, в то время когда у каждого объекта свои личные нестатические переменные, static переменные существуют на уровне класса, т.е к ним можно обращаться без создания объекта, соответсвенно что для всех объектов они будут одинаковыми.

READ ALSO
Как сделать задержку в ходе выполнения цикла?

Как сделать задержку в ходе выполнения цикла?

Необходимо сделать цикл, в котором происходит выполнения действия -> задержка (допустим секунда) -> опять действие

168
Как динамически обновлять текст в Label, при его изменении в цикле (Java)?

Как динамически обновлять текст в Label, при его изменении в цикле (Java)?

Есть два класса: Second и ThirdОба отображают окно JFrame

174