Maison  >  Article  >  Java  >  Comment convertir l'effacement de type dans les génériques Java

Comment convertir l'effacement de type dans les génériques Java

WBOY
WBOYavant
2023-04-18 23:40:01784parcourir

Explication

1. Des valeurs génériques existent dans la phase de compilation. Lorsque le code entre dans la machine virtuelle, les valeurs génériques seront supprimées.

2. Cette fonctionnalité est appelée suppression de type. Lorsque les génériques sont supprimés, il dispose de deux méthodes de conversion. La première est que si le générique ne définit pas de limite supérieure de type, le générique sera converti en type Object. La seconde est que si la limite supérieure de type est définie, le générique sera converti en sa limite supérieure de type.

Instances

//未指定上限
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());
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer