Java에서 제네릭은 형식 지우기를 사용하여 구현된다는 것을 읽었습니다. 나는 그것을 테스트하고 난 완전히 개념을 이해하면보고 싶었다, 그러나 나는이 코드 조각이 완벽하게 작동하는지 알아 놀라게하고 혼란스러워했다 :반사가 일반적인 방법으로 사용되는 이유는 무엇입니까?
public class Test{
public static void main(String []args){
canAssign3(3,3.2);
}
static<T1,T2> boolean canAssign3(T1 from, T2 to){
Class<?> c1 = from.getClass();
Class<?> c2 = to.getClass();
System.out.println(c1.getName());
System.out.println(c2.getName());
System.out.println(c2.isAssignableFrom(c1));
return (c2.isAssignableFrom(c1));
}
}
출력 : 내가
java.lang.Integer
java.lang.Double
false
했다 c1
의 클래스와 c2
의 클래스는 Object
이고, c2.isAssignableFrom(c1)
은 true
이 될 것으로 기대하고 있습니다. 여기에 무엇이 누락 되었습니까?
유형 삭제는 컴파일 할 때 발생합니다. –