Я не сделал разработки SWING начиная со своих ранних классов CS, но если бы она не была создана в Вас, то мог бы просто наследовать javax.swing.AbstractButton
и создать Ваше собственное. Должно быть довольно просто соединить что-то проводом вместе с их существующей платформой.
На них больше не ссылается Коллекция, но если у вас есть какие-либо ссылки где-либо в вашем коде, эта ссылка продолжает существовать, как и была.
Как уже упоминалось, источник Vector вызывает:
// Let gc do its work
for (int i = 0; i < elementCount; i++)
elementData[i] = null;
Однако это устанавливает для внутренней ссылки значение null (передача по значению) и не влияет на внешние ссылки.
Они не обнуляются - в этом нет смысла, только ссылка становится нулевой, а не значение - они просто разыменовываются . Если у них нет другой ссылки на него (например, другой класс, имеющий ссылку на статическую переменную или переменную экземпляра), то они будут иметь право на сборщик мусора.
Если на них нет ссылок из других источников, они будут собраны мусором.
Если есть сомнения, вы можете просто взглянуть на исходный код - это в комплекте с JDK (обычно в файле с именем rt.zip
).
public void clear() {
removeAllElements();
}
public synchronized void removeAllElements() {
modCount++;
// Let gc do its work
for (int i = 0; i < elementCount; i++)
elementData[i] = null;
elementCount = 0;
}
Комментарий «Пусть gc выполняет свою работу» взят из фактического источника, а не из моего.
//Let gc do its work
for (int i = 0; i < elementCount; i++)
elementData[i] = null;
Это код с комментарием из класса Vector. Думаю, это ответ на вопрос.