아래에서 볼 수 있듯이 arrayList에서 객체를 제거하는 것과 관련하여 몇 가지 질문이 있습니다. JComponent를 만들고 ArrayList에 추가 한 다음 JPanel에 추가 한 다음 Arraylist에서 제거합니다. ,하지만 여전히 JPanel에 붙어 있습니까? 개체가 여전히 Jpanel에 추가되는 이유는 무엇입니까? "추가"방법으로 참조 할 수 있습니까? completly 제거하려면 jp.remove (obj)해야합니까? 그렇지 않은 경우 어떻게 완료합니까? < - 주요 질문입니다.Deletion GC ArrayList Java
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.util.ArrayList;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Frame extends JFrame{
public Frame(){
Jpanel jp = new Jpanel();
getContentPane().add(jp);
setPreferredSize(new Dimension(200,200));
setVisible(true);
pack();
}
public class Jpanel extends JPanel{
public Jpanel(){
ArrayList<Obj> ArrList = new ArrayList<Obj>();
setLayout(null);
Obj obj = new Obj();
ArrList.add(obj);
add(obj);
ArrList.remove(0);
System.out.println(ArrList);
revalidate();
repaint();
}
}
public class Obj extends JComponent{
public Obj(){
setBounds(0,0, 100 , 100);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.green);
g.fillRect(50, 50, 50, 50);
}
}
public static void main(String[] args) {
Frame f = new Frame();
}
}
왜 패널에서 패널을 제거하려면 목록에서 제거 할 예정입니까? –
@Jon Skeet 그것에 대한 참조가 삭제 될 것이라고 생각하면 GC가 삭제합니다. –
아니요, 목록에서 삭제하도록 요청했습니다. 삭제할 것이 전부입니다. 컬렉션에서 다른 요소에 영향을주지 않고 요소를 제거 할 수 없다면 매우 이상합니다. –