2017-12-13 1 views
0

Java 8에서는 제네릭을 사용하여 단일 메서드를 작성할 수 있습니다.이 메서드는 올바른 클래스인지 확인한 다음 올바르게 캐스팅합니다 . 뭔가 같은 : 그것은 다음과 같이 호출 할 수 있도록하나의 메서드로 generics를 사용하여 인스턴스를 확인하고 객체를 캐스팅 할 수 있습니까?

private T check(final Object value) { 
    assertThat(value, instanceOf(T.class)); 
    return (T) value; 
} 

:

String strValue = check<String>(objValue); 
+4

당신이 원하는 것은 정상적인 캐스트와 정확히 같습니다. –

+0

@ 루이스 와서 만 거의. 정상적인 캐스트가 실패하면 'ClassCastException'을 던집니다. – shmosel

+1

음, 그렇습니다. 아마도 assertThat은 어쩌면 엄밀히 말해서 덜 유용 할 수있는 어설 션 예외 또는 오류를 던질 것입니다. –

답변

2

이 당신에 대해 검사 할 Class 객체를 전달하는 것입니다 달성하기위한 방법.

private <T> T check(final Object value, Class<T> clazz) { 
    assertThat(clazz.isInstance(value)); 
    return clazz.cast(value); //Throws ClassCastException if not valid 
} 
+0

고마워요. 저는 꽤 가깝지만 경고가없는 버전을 얻을 수 없었습니다. –

관련 문제