首页 > 编程语言 >JAVA的一些冷门知识

JAVA的一些冷门知识

时间:2024-02-02 17:12:30浏览次数:28  
标签:JAVA 子类 代码 知识 冷门 类型 擦除 泛型 Java

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

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

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

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

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

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

getGenericSuperclass详解-CSDN博客

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

标签:JAVA,子类,代码,知识,冷门,类型,擦除,泛型,Java
From: https://www.cnblogs.com/qook/p/18001166

相关文章

  • JAVA二维数组
    二维数组介绍二位数组的每个元素都是一维数组二维数组在内存中的形式动态初始化1动态初始化2动态初始化3(列数不确定)静态初始化二维数组使用细节和注意事项......
  • Java泛型
    参考:磊叔的技术博客 : 聊一聊-JAVA泛型中的通配符T,E,K,V,?tutorialspoint: Java-Generics Java-泛型泛型的好处在没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参......
  • JAVA一维数组的赋值,拷贝,反转,扩容
    赋值(引用传递)拷贝反转扩容......
  • java中锁分类
    1.可重入锁和不可重入锁可以对临界区资源重复加锁,如synchronized、ReentrantLock2.公平锁和非公平锁FIFO,如果对⼀个锁来说,先对锁获取请求的线程⼀定会先被满⾜,后对锁获取请求的线程后被满⾜,那这个锁就是公平的。反之,那就是不公平的。ReentranLock支持公平锁和非公平锁,默认非公......
  • Java中使用StopWatch实现代码块耗时统计/计时某段代码执行
    场景Java实战-基于JDK的LRU算法实现、优雅的实现代码耗时统计(SpringAOP、AutoCloseable方式):https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130970242上面讲了统计方法的耗时,实现和使用面向方法体。如果是在方法中,需要频繁统计一段段的代码块的耗时,可以使用St......
  • Java并发基础:CountDownLatch全面解析!
    内容概要CountDownLatch的优点在于能够简洁高效地协调多个线程的执行顺序,确保一组线程都完成后才触发其他线程的执行,适用于资源加载、任务初始化等场景。它提供了清晰的等待/通知机制,易于理解和使用,是提升多线程程序性能和可靠性的重要工具。核心概念CountDownLatch是java.util......
  • 2023爱分析·知识库问答市场厂商评估报告:爱数
    01研究范围定义研究范围:大模型是指通过在海量数据上依托强大算力资源进行训练后能完成大量不同下游任务的模型。2023年以来,ChatGPT引爆全球大模型市场。国内众多大模型先后公测,众多互联网领军者投身大模型事业,使得大模型市场进入“百团大战”阶段,2023年成为公认的“大模型元年”。......
  • JAVA一维数组介绍和初始化
    一维数组概述一维数组的初始化(声明数组并开辟内存空间)动态初始化1动态初始化2静态初始化一维数组的使用细节......
  • Java将密码加盐加密存储和校验
    注册和登陆的时候,需要加密和校验,以下为加密和解密代码packageorg.ongoal.common.config;importorg.springframework.util.DigestUtils;importorg.springframework.util.StringUtils;importjava.util.UUID;publicclassPasswordUtil{/***加盐算法->格......
  • java开发中业务层和数据层的区别
    其实标准业务层开发很多初学者认为就是调用数据层,怎么说呢?这个理解是没有大问题的,更精准的说法应该是组织业务逻辑功能,并根据业务需求,对数据持久层发起调用。有什么差别呢?目标是为了组织出符合需求的业务逻辑功能,至于调不调用数据层还真不好说,有需求就调用,没有需求就不调用。一个......