을 방지 할 수 있습니다.결합 자바 제네릭 및 반사 내가이 같은 일부 코드가 캐스팅
Method m = MyClass.class.getMethod("myMethod", String.class);
String result = (String)doMethod(m, "Hello");
이 나를 위해 (인수 및 모든 변수 수) 잘 작동합니다 : doMethod
를 호출하려면이 같은 뭔가. 나를 괴롭히는 것은 호출자의 String
에게 필요한 캐스트입니다.myMethod
은 String
을 반환한다고 선언 했으므로 doMethod
은 반환 유형을 String
으로 변경할만큼 현명해야합니다. Java generics를 사용하여 이와 같은 작업을 수행 할 수있는 방법이 있습니까? 이 루틴 자체 캐스트를 이동하지만
String result = doMethod(m, "Hello");
int result2 = doMethod(m2, "other", "args");
은 안전하지 않게하기 위해 체크되지 않은 캐스트 대신 returnType.cast (...)를 사용하십시오. – mihi
+1 두 번째 예는 다소 기분이 좋지만 흥미 롭습니다. Java 유추 목록에 형식 유추를 추가하고 있습니다. –
그건 컴파일 시간이 안전하지 않습니다, 그것은 단지 컴파일러 경고를 숨 깁니다. 메소드의 리턴 유형이 전달한 것과 일치하지 않으면 런타임시 ClassCastException을 발생시킵니다. – Affe