>  기사  >  Java  >  Java 제네릭에서 유형 삭제를 변환하는 방법

Java 제네릭에서 유형 삭제를 변환하는 방법

WBOY
WBOY앞으로
2023-04-18 23:40:01784검색

설명

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제