the important thing is not to stop questioning

导航

 

1、@Size可以用来校验数组长度。

2、构造代码块,在构造函数之前被调用,静态构造代码块,只被调用一次,有点类似C#的静态构造函数。java中的四种代码块_java 代码块的分类-CSDN博客

3、匿名内部类是 Java 编程语言中一种特殊的类,它没有显式地定义类名,而是在创建对象时通过传递实现了某个接口或继承了某个类的代码块来定义类。通常,我们使用它来简化代码、减少类的数量和更高效地编写事件处理程序等。【Java基础】匿名内部类-CSDN博客

4、类型擦除和获取泛型的class。JAVA存在类型擦除的机制,编译时使用泛型,然后擦除类型(使用其下限类型,最多到Object),并插入想关的类型强制转换代码。这个设计的主要目的是为了减少类数量。但是这就导致了在运行时,无法使用泛型的类型。比如,需要反序列化时,没有真实的class,是无法反序列化为真实类型的。这就需要有办法获取泛型的真实类型。最主要的绕过思路是,创建泛型类的子类,并指定泛型参数为具体类。JAVA会视子类为不同于其泛型基类的新类,该类会保留基类的泛型参数。通过getGenericSuperclass获取泛型参数。可以创建一个工具类,专门用来做这件事,该类没有具体的功能,只是为了绕过类型擦除的机制。可以参考fastJson序列化中使用的TypeReference<>。这里可以结合匿名子类的方法,以避免定义很多子类。

类型通配符的作用是为了代替泛型类的类型实参

当我们使用泛型类作为参数时,我们不想固定具体的泛型类型实参,而是想接收任意类型,或者某个类及其子类或超类类型作为类型实参,这个时候就需要使用通配符了,使用泛型类<?>作为类型实参
总结来说通配符解决的问题就是:类B是类A子类,但是泛型类<B>不是泛型类<A>的子类,但是我们又想有这么个类型能同时接收泛型类<B>泛型类<A>类型作为参数的问题

Java泛型(二):类型擦除与泛型翻译 - 知乎 (zhihu.com)

java怎么获取泛型的class_mob64ca12f24f3a的技术博客_51CTO博客

getGenericSuperclass详解-CSDN博客

Java 泛型通配符上下界理解及应用 - 简书 (jianshu.com)

获取Java集合中泛型的Class对象_获取list中元素的class-CSDN博客

Java 泛型中的通配符详解_java 泛型通配符-CSDN博客

posted on 2024-02-02 17:03  qook  阅读(15)  评论(0编辑  收藏  举报