설명
1. 컴파일 단계에서는 일반 값이 존재합니다. 코드가 가상 머신에 들어가면 일반 값이 삭제됩니다.
2. 이 기능을 유형 삭제라고 합니다. 제네릭이 제거되면 두 가지 변환 방법이 있습니다. 첫 번째는 제네릭이 유형 상한을 설정하지 않으면 제네릭이 객체 유형으로 변환된다는 것입니다. 두 번째는 유형 상한이 설정되면 제네릭이 해당 유형 상한으로 변환된다는 것입니다.
인스턴스
//未指定上限 public class Test1<T> { T t; public T getValue() { return t; } public void setVale(T t) { this.t = t; } } //指定上限 public class Test2<T extends String> { T t; public T getT() { return t; } public void setT(T t) { this.t = t; } } //通过反射调用获取他们的属性类型 @Test public void testType1() { Test1<String> test1 = new Test1<>(); test1.setVale("11111"); Class<? extends Test1> aClass = test1.getClass(); for (Field field : aClass.getDeclaredFields()) { System.out.println("Test1属性:" + field.getName() + "的类型为:" + field.getType().getName()); } Test2 test2 = new Test2(); test2.setT("2222"); Class<? extends Test2> aClass2 = test2.getClass(); for (Field field : aClass2.getDeclaredFields()) { System.out.println("test2属性:" + field.getName() + "的类型为:" + field.getType().getName()); } }
위 내용은 Java 제네릭에서 유형 삭제를 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!