저는 일종의 게임 엔진을 작성하고 있습니다. 내 모든 개체는 GameObject
클래스에서 확장됩니다. 개체가 다른 개체를 만지고 있는지 여부를 확인할 수 있어야합니다. 내 코드는 이렇게이다 : 나는 이해할 수없는 무엇자바 : 런타임에 클래스를 매개 변수로 전달
public boolean collidesWith(GameObject caller, Class collideType) {
for(/* the array of all GameObjects */) {
// only check against objects of type collideType
// this line says "cannot find symbol: collideType"
if(gameObjects[i] instanceof collideType) {
// continue doing collision checks
// return true in here somewhere
}
else continue;
}
return false;
}
는 collidesWith()
에 같은 것을 전달하는 방법이다. 이상적으로 나는 collidesWith()
의 각 호출에 대한 인스턴스를 생성하고 싶지는 않지만 절대적으로해야한다면 작업 할 수 있습니다.
instanceof
- 난 정말 원하는 여부 클래스
- 전달 될 : 여기에 질문과 답변의
톤이 바보 같은 것들로 처리 한 수업을 통과해야합니다
리플렉션을 사용해야합니까? 수업의 이름을 받아서 equals()
과 비교해야합니까? 인스턴스를 만들 필요가 있습니까?
BouncyBall.class – Adi
당신은 충돌 감지를 할 필요가있는 경우에, 당신의 알고리즘에 필요한 geome을 줄 것이다 공통 인터페이스를 정의 충돌하는 객체를 검사하는 tric 정보; 모든 충돌 가능한 클래스가 해당 인터페이스를 구현하도록하십시오. 'collidesWith()'는 그 인터페이스를 구현하는 모든 타입의 충돌을 검사 할 수 있습니다. 대신 여러 가지 충돌 유형을 확인하려면 리플렉션을 사용하는 것보다 여러 가지 방법을 만드는 것이 더 나을 것이라고 생각합니다. 이는 게임을위한 것이므로 속도가 중요합니다. – watery
GameObjects에서 "collideswith"메소드를 구현하지 않고 "equals"처럼 취급합니다 (부모 구현이 올바르지 않은 경우 각 클래스가 구현해야합니다.) – ErstwhileIII