java教程技术文章
-
BigDecimal 的 equals 同时比较数值和 scale,而 compareTo 只比较数值。本文用 2.0 与 2.00 说明条件判断、规范化和 HashSet、TreeSet 的选择边界。452 收藏 -
文章 · java教程 | 1星期前 | 异常处理 · 并发编程 · api设计 · Java教程 · CompletableFuture · java 异常处理 异步编程 completablefuture Handle 统一结果
用 CompletableFuture.handle 同时处理成功值和异常,把异步调用统一转换为稳定的业务结果对象,并对比 exceptionally、whenComplete 的适用边界与常见误区。338 收藏 -
通过可观察的工厂示例解释 Java Optional.orElse 与 orElseGet 的求值边界,给出默认值成本、副作用、异常语义和代码评审清单,帮助选择真正惰性的默认值写法。436 收藏 -
用 TreeMap 工厂和自定义 Comparator 控制 Java Stream groupingBy 的分组键顺序,并说明时间比较器相等导致键合并的边界。448 收藏 -
ByteBuffer 写入完成后要先 flip 才能按有效数据读取。本文用具体状态值说明 position、limit、capacity 的变化,并区分 flip、rewind、clear 与 compact。368 收藏 -
Java Files.find 和 Files.walk 都能搜索文件树,但过滤条件的落点不同:属性条件优先放进 find,路径流组合和后续转换更适合 walk。本文用可关闭资源的示例说明 maxDepth、BasicFileAttributes、filter 和异常边界。348 收藏 -
文章 · java教程 | 1星期前 | Java · 异常处理 · 资源管理 · java try-with-resources AutoCloseable close suppressed exception
Java try-with-resources 多个资源时按声明顺序初始化、按相反顺序关闭;本文说明初始化失败、close 异常和 suppressed exception 的判断方法。501 收藏 -
Java 25 的 ScopedValue 适合在明确的动态作用域内单向传递不可变上下文;ThreadLocal 仍适合可变的线程本地状态,但在线程池任务结束时必须 remove。本文用最小代码和选择表说明两者在任务边界、嵌套绑定和子任务继承上的区别。225 收藏 -
Java 虚拟线程可以承载大量并发任务,但外部服务仍有容量上限。本文用 Semaphore 只限制下游调用区,并说明中断、等待超时、finally 释放以及连接池重复限流的边界。468 收藏 -
Java Stream.toList() 返回的是不可修改 List,直接 add 会抛出 UnsupportedOperationException。本文对比 toList、Collectors.toList 和 toCollection(ArrayList::new),说明需要追加元素时的正确写法。344 收藏 -
Java Optional 的 orElse 会先求值默认参数,orElseGet 则只在 Optional 为空时调用 Supplier。通过最小实验、参数求值规则和工程边界,快速判断两种写法。138 收藏 -
Java 21 的 SequencedCollection.reversed() 返回反向顺序视图,不必先复制 ArrayList。本文用代码说明视图与快照的差异、修改可见性和并发遍历边界。431 收藏 -
Java pattern matching for switch 遇到 null 时不会自动进入 default。本文用 case null 与 case null, default 对比说明匹配边界、合法组合和实际检查清单。274 收藏 -
Java sealed interface 通过 permits 限制直接实现者,并要求它们用 final、sealed 或 non-sealed 明确后续扩展边界。本文结合层级、模块包约束和二进制兼容性说明如何正确设计。266 收藏 -
Java record 接收接口 JSON 时,额外字段是否报错不由 record 单独决定,而由 Jackson 的未知属性策略决定。本文用最小示例说明局部注解、全局 ObjectMapper 和 ObjectReader 的边界,并给出上线前的兼容性检查清单。380 收藏