
Java
文章平均质量分 78
Java语言的知识毕竟
伯恩bourne
难事作于易,大事作于细。Hello world!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java: 构造器表达式 Constructor Expression /构造器引用(Constructor Reference)
"constructor expression"(构造器表达式)通常指的是使用构造器引用(Constructor Reference)的表达式。构造器引用允许你通过类名和new关键字来引用构造器,而不必显式写出 Lambda 表达式的参数和new调用原创 2025-07-28 11:58:05 · 296 阅读 · 0 评论 -
Java:为什么需要通配符捕获(wildcard capture)
Java为什么需要通配符捕获,通配符捕获机制通过临时绑定未知类型变量,解决泛型通配符"?"导致的类型信息缺失问题。它允许编译器在方法作用域内将通配符"?"绑定到具体类型变量T,从而在保持类型安全的前提下实现对通配符集合的操作。典型应用如交换列表元素的swap方法,通过辅助泛型方法捕获实际类型,解决了向通配符集合写入元素的编译错误。该机制平衡了泛型的灵活性与类型安全性,是Java泛型系统的重要补充。原创 2025-07-29 17:29:26 · 478 阅读 · 0 评论 -
Java:函数式接口 Supplier<T>
Java中Supplier<T>接口是一个无参数但返回指定类型值的函数式接口,核心用途包括延迟计算、解耦生产逻辑和函数式编程。典型应用场景有:1) 结合Optional实现默认值懒加载;2) 作为工厂方法封装对象创建;3) 缓存数据加载等。示例展示了生成随机数、延迟创建默认值以及作为方法参数传递生成逻辑等用法,有效避免不必要的资源消耗,提高代码灵活性。Supplier通过get()方法实现"需要时才计算"的特性,在资源敏感场景中尤为实用。原创 2025-07-10 15:51:40 · 262 阅读 · 0 评论 -
Java :T extends Comparable<? super T> 和 T extends Comparable<T>的区别
《Java泛型函数比较:T extends Comparable<T> vs T extends Comparable<? super T>》 摘要:本文对比了两个Java泛型函数的区别,主要在于类型参数的不同约束。T extends Comparable<T>要求类型T必须直接实现与自身比较,而T extends Comparable<? super T>允许T与自身或其父类比较,兼容继承场景。后者适用范围更广,能处理子类复用父类比较逻辑的情况,如Dog继承原创 2025-07-11 16:41:47 · 427 阅读 · 0 评论 -
Java :编译器的占位符 T#1
Java泛型中的T#1是编译器为通配符?创建的临时类型变量,用于表示某个确定的具体类型。它存在于编译阶段,用于类型检查和推导,确保泛型操作的类型安全。T#1不是可见的具体类型,而是一个内部占位符,在运行时会被擦除。当操作Pair<?>时,编译器会捕获?为T#1,并根据实际对象类型(如String)推断其具体值。这种机制允许在保持类型安全的情况下操作未知类型的泛型实例。不同编译器可能使用不同表示(如CAP#1),但原理相同。原创 2025-07-14 17:31:29 · 275 阅读 · 0 评论 -
Java :Optional容器类
Java 8引入的Optional类为处理可能为null的值提供了更安全的方式,有效减少NullPointerException。摘要介绍了创建Optional的三种方法(of/ofNullable/empty),判断值存在的isPresent/isEmpty/ifPresent方法,获取值的get/orElse/orElseGet/orElseThrow方法,以及转换值的map/flatMap和过滤值的filter操作。通过示例展示了Optional的典型用法,并提示注意事项:避免滥用、慎用get()、不原创 2025-07-10 15:54:31 · 849 阅读 · 0 评论 -
Java :通配符捕获(Wildcard Capture)
什么是通配符捕获?本文解释了Java泛型中的通配符捕获机制。通过分析《Java核心卷1》中的代码示例,说明了为何不能直接在swap(Pair<?> p)方法中实现交换逻辑:因为通配符?表示未知类型,编译器无法确定具体类型参数。文章详细阐述了swapHelper泛型方法的作用,它通过类型参数<T>捕获具体类型,从而安全地操作泛型对象。还解释了通配符捕获的概念,即编译器将通配符?隐式转换为具体类型参数的过程。最后指出这种设计允许客户端代码灵活处理不确定类型的泛型对象,同时保持类型安全。原创 2025-07-15 10:32:36 · 451 阅读 · 0 评论 -
Java: 反射机制的 ParameterizedType(参数化类型)
Java反射中的ParameterizedType接口用于处理泛型参数化类型,在类型擦除后仍能获取泛型信息。它通过getActualTypeArguments()获取类型参数,getRawType()获取原始类型,getOwnerType()获取所有者类型(内部类场景)。典型应用包括JSON反序列化、依赖注入等框架开发,通过子类继承泛型父类的方式规避类型擦除限制。该接口与GenericArrayType、TypeVariable等共同构成Java反射的类型体系,是运行时处理泛型的重要工具。原创 2025-07-18 14:28:39 · 915 阅读 · 0 评论