내가 만든 개체 (당신을 따르는 타원)를 삭제하고 싶지만 어떻게해야합니까?
delete follower1;
작동하지 않았습니다.
편집하다:
좋아요, 좀 더 맥락을 알려 드리겠습니다. 나는 당신이 조종 할 수있는 타원과 당신을 따르는 타원으로 작은 게임을 만들고 있습니다. 이제 DrawPanel.class라는 파일이 있습니다.이 클래스는 화면의 모든 것을 그리고 충돌, 사운드 등을 처리합니다. 플레이어를 따르는 타원 인 적군. 클래스가 있습니다. 제어 할 수있는 플레이어 인 entity.class가 있습니다. 그리고 플레이어가 팔로워와 교차하면 플레이어 개체를 삭제하고 싶습니다. 내가하는 방식 :
public void checkCollisions(){
if(player.getBounds().intersects(follower1.getBounds())){
Follower1Alive = false;
player.health = player.health - 10;
}
}
답변
null을 할당하거나 선언 된 블록을 그대로 두어 참조를 제거해야합니다. 그 후 가비지 수집기에 의해 자동으로 삭제됩니다 (즉시가 아니라 결국).
예 1 :
Object a = new Object();
a = null; // after this, if there is no reference to the object,
// it will be deleted by the garbage collector
예 2 :
if (something) {
Object o = new Object();
} // as you leave the block, the reference is deleted.
// Later on, the garbage collector will delete the object itself.
현재 찾고있는 것은 아니지만 참고 : System.gc () 호출로 가비지 수집기를 호출 할 수 있습니다.
답변
C ++이 표시됩니다.
delete
Java 에는 없으며 모든 객체는 힙에 생성됩니다. JVM에는 참조 횟수에 의존하는 가비지 수집기가 있습니다.
개체에 대한 참조가 더 이상 없으면 가비지 수집기에서 수집 할 수있게됩니다.
myObject = null
하지 않을 수도 있습니다. 예를 들면 :
Foo myObject = new Foo(); // 1 reference
Foo myOtherObject = myObject; // 2 references
myObject = null; // 1 reference
이 모든 작업은 참조 myObject
를 null 로 설정 myObject
하기 만하면 참조 횟수를 1만큼 감소시키는 것 외에는 한 번 가리키는 개체에 영향을주지 않습니다 . myOtherObject
여전히 해당 개체를 참조 하므로 아직 수집 할 수 없습니다.
답변
개체가 사라지는 데 도움이 필요하면 참조를 null로 설정하십시오.
String x = "sadfasdfasd";
// do stuff
x = null;
참조를 null로 설정하면 개체에 대한 다른 참조가없는 한 개체가 가비지 수집 될 가능성이 높아집니다.
답변
Java에서 객체를 삭제할 필요가 없습니다. 개체에 대한 참조가 없으면 가비지 수집기에 의해 자동으로 수집됩니다.
답변
를 사용하여 참조를 제거 할 수 있습니다 null
.
수업이 있다고 가정 해 보겠습니다 A
.
A a = new A();
a=null;
마지막 문은 개체의 참조를 제거 a
하고 해당 개체는 JVM에 의해 “가비지 수집”됩니다. 이를 수행하는 가장 쉬운 방법 중 하나입니다.
답변
네, 자바는 가비지 수집, 메모리를 삭제합니다.
답변
//Just use a List
//create the list
public final List<Object> myObjects;
//instantiate the list
myObjects = new ArrayList<Object>();
//add objects to the list
Object object = myObject;
myObjects.add(object);
//remove the object calling this method if you have more than 1 objects still works with 1
//object too.
private void removeObject(){
int len = myObjects.size();
for(int i = 0;i<len; i++){
Objects object = myObjects.get(i);
myObjects.remove(object);
}
}