2014-04-23 2 views
0

이 switch 문에 리플렉션을 적용하려고합니다. 내가 찾은 예제는 모두 문자열에서만 작동합니다. 이 경우 "예술"은 대상입니다.switch 문에 객체를 사용하여 리플렉션 적용

public static EnumArt BukkitToNotch(Art art) { 

    switch (art) { 
     case KEBAB: return EnumArt.KEBAB; 
     case AZTEC: return EnumArt.AZTEC; 
     case ALBAN: return EnumArt.ALBAN; 
     case AZTEC2: return EnumArt.AZTEC2; 
     case BOMB: return EnumArt.BOMB; 
     case PLANT: return EnumArt.PLANT; 
     case WASTELAND: return EnumArt.WASTELAND; 
     case POOL: return EnumArt.POOL; 
     case COURBET: return EnumArt.COURBET; 
     case SEA: return EnumArt.SEA; 
     case SUNSET: return EnumArt.SUNSET; 
     case CREEBET: return EnumArt.CREEBET; 
     case WANDERER: return EnumArt.WANDERER; 
     case GRAHAM: return EnumArt.GRAHAM; 
     case MATCH: return EnumArt.MATCH; 
     case BUST: return EnumArt.BUST; 
     case STAGE: return EnumArt.STAGE; 
     case VOID: return EnumArt.VOID; 
     case SKULL_AND_ROSES: return EnumArt.SKULL_AND_ROSES; 
     case FIGHTERS: return EnumArt.FIGHTERS; 
     case POINTER: return EnumArt.POINTER; 
     case PIGSCENE: return EnumArt.PIGSCENE; 
     case BURNINGSKULL: return EnumArt.BURNINGSKULL; 
     case SKELETON: return EnumArt.SKELETON; 
     case DONKEYKONG: return EnumArt.DONKEYKONG; 
     case WITHER: return EnumArt.WITHER; 
     default: 
      throw new AssertionError(art); 
    } 
} 

리플렉션으로이를 수행하는 방법은 무엇인가요?

+1

'이 switch 문에 반영을 적용하려고합니다.'는 아무 의미도 없습니다. 명확히하십시오. –

+1

여기에 반성은 어디 있습니까? 왜 여기에 반성이 필요한가요? 당신은 무엇을하길 원합니까? –

+0

EnumArt는 열거 형입니까? – Bohemian

답변

0

가정 EnumArtArt 단지 enum API를 사용하여, 당신은 반사를하지 않아도 모두 enums 있습니다

public static EnumArt BukkitToNotch(Art art) { 
    try { 
     return EnumArt.valueOf(art.name()); 
    } catch (IllegalArgumentException ignore) 
     throw new AssertionError(art); 
    } 
} 

예술 열거, 문자열 속성 이름과 일치하기 위해 노력하고 무엇이든 사용하지 않은 경우.

둘 다 열거 형인 경우 열거 형으로 변환해야합니다.

+0

좋아, 그래서 Art는 name() 메소드를 가지고있다. Art와 EnumArt는 모두 enum입니다. 오류 테스트 : : testCraftArtToNotch (org.bukkit.ArtTest) : I가 시도 - 캐치를 추가 한 net.minecraft.server.EnumArt.KEBAB – Boid

+0

일정 없음 열거 이것은 우리가 솔루션을 적용하기위한 얻을 오류입니다 스위치 코드를 모방 해보십시오. 오류가 발생하면 EnumArt 열거 형에 KEBAB 인스턴스가 없습니다. – Bohemian

+0

우리는 이미 이것을 시도하고 오류 대신 오류를 반환합니다. 시험을 보는데 도움이 될까요? – Boid

관련 문제