2014-04-01 2 views
0

더 나은 제목이 없기 때문에 이것을 확인하는 가장 좋은 방법을 찾고 있습니다.각 인스턴스 중 하나만 확인하는 가장 빠른 방법은 무엇입니까?

나는 화살촉이 있습니다. 나는 또한 object1, object2, ... objectx에 대해 콜리 전을 코딩하고자하는 객체를 가지고 있는데, objectx는 내가 확인하고있는 마지막 객체이다.

내가 사용하고있는 엔진의 충돌 시스템에는 x1 개체와 x2 개체가 있으며 충돌시 개체가 다를 수 있습니다. 예를 들어 화살표가 어떤 객체 1에서 x까지 도달하면, 화살표가 x1 또는 x2인지 여부는 모르지만 쉽게 확인할 수 있습니다.

하나의 개체가 화살표이고 다른 개체가 내 많은 개체 중 하나 인 경우 true 인 if 문을 작성하고 싶습니다. 이것은 내가 지금까지 가지고있는 것입니다 :

if ((x1Type.equals("arrow") || x2Type.equals("arrow")) && ((x1Type.equals("object1") || x1Type.equals("object2") || x1Type.equals("object3") || ... || x1Type.equals("objectx")) || 
         x2Type.equals("object1") || x2Type.equals("object2") || x2Type.equals("object3") || ... || x2Type.equals("objectx"))) 

이 코드는 작동하지만, 더 좋은 방법이 있다고 확신합니다. 그리고 다소 모호한 것에 대해 유감스럽게 생각합니다.

+0

이것은 기본 프레임 워크에서 실패한 것입니다. 무엇이든; 그리고 그것이 작동한다면 그 문제에 중대한 문제가 없다면 아마 혼자 남겨 둘 수 있습니다. –

+0

@AnubianNoob 나는이 코드를 명확히 단순화 할 것이다. –

+0

@ user2005938 어떤 Java 버전을 사용하고 있습니까? –

답변

1

개체 자체에서 개체 유형에 액세스 할 수 있다고 가정하면 Collection (일반적으로 Set)을 사용하여 충돌하는 개체가 화살표에 의해 영향을 받는지 여부를 확인하는 방법에 대해 어떻게 생각합니까?

public static final String TYPENAME_ARROW = "arrow"; 
public static final Set<String> impactedTypes = new HashSet<String>() { 
    { 
     add("object1"); 
     add("object2"); 
     add("object3"); 
     add("objectx"); 
    } 
}; 

public static void collide(final Object x1, final Object x2) { 
    if (x1.getType().equals(ARROW_TYPE)) { 
     if (impactedTypes.contains(x2.getType())) { 
      // hit x2 with x1; 
     } 
    } else if (x2.getType().equals(ARROW_TYPE)) { 
     if (impactedTypes.contains(x1.getType())) { 
      // hit x1 with x2; 
     } 
    } 
} 

내가 주석으로이를 넣고 싶었지만 글쎄, 그건 너무 커요 :

나는 이런 식으로 뭔가를 제안하고있다. 나는 완전히 잘못되었을 수도 있습니다. 그 경우, 제발 친절하게 알려주세요. 제 응답을 삭제할 것입니다.

+0

+1 더블 브래킷 초기화 및 최종 사용에 대한 내용 – Scott

+0

실제로 감사합니다. 나는 더블 브래킷 초기화를 위해 -1을했을 ​​것이다. 그러나 헤이, 나는 다소 게으른 느낌이 들었다! 그리고 네, 일반적으로'final'과'private' 물건에 능통합니다. :) – ccjmne

관련 문제