Количество подсчетов. Подкласс был установлен (ArrayList & lt; Student & gt;) - Java [дубликат]

Также, если вы используете сторонние библиотеки, убедитесь, что у вас есть правильные 32/64 битные файлы

-1
задан user2784473 18 September 2013 в 17:37
поделиться

4 ответа

На самом деле это не такой уж плохой вопрос, вы можете контролировать количество экземпляров с помощью sychronize и counter, этот шаблон проектирования называется классом, контролируемым экземпляром, и это одна из первых вещей, упомянутых в «эффективной Java», Джошуа Блох (глава 2)

0
ответ дан alfasin 25 August 2018 в 16:08
поделиться

Отслеживайте это в своем конструкторе с помощью статической переменной .

public class A {

    private static int instances = 0;

    public A() {
        instances++;
    }
}

Если concurrency вас беспокоит:

]
public class A {

    private static final Object LOCK = new Object();
    private static int instances = 0;

    public A() {
        synchronized(LOCK) {
            instances++;
        }
    }
}

Чтобы ответить на то, что вы сказали в комментариях ниже вашего вопроса: если вы хотите узнать, сколько в настоящее время существует (т. е. не было мусора, собранного ) вы можете попробовать что-то вроде следующего:

public class A {

    private static final Object LOCK = new Object();
    private static int instances = 0;

    public A() {
        synchronized(LOCK) {
            instances++;
        }
    }

    protected void finalize() throws Throwable {
        synchronized(LOCK) {
            instances--;
        }
    }
}

Метод finalize() будет вызываться прямо перед тем, как объект будет собран мусором. Однако сбор мусора известен как ненадежный .

Кроме того, в качестве побочного примечания вы могли бы использовать класс AtomicInteger, а не блоки int и synchronized, так как @rolfl говорит ниже. Все ответы на эту идею должны идти на его ответ, если он отправит сообщение.

7
ответ дан Community 25 August 2018 в 16:08
поделиться

вы можете реализовать счетчик, когда он inits

0
ответ дан sinfere 25 August 2018 в 16:08
поделиться

Нет прямого пути, но если вы действительно заинтересованы в отслеживании этой информации, вы можете создать поле private static int instanceCounter и увеличить его в своих конструкторах. Вам также понадобится метод finalize, который уменьшает счетчик всякий раз, когда экземпляр собирает мусор.

0
ответ дан StormeHawke 25 August 2018 в 16:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: