java教程技术文章
-
Java Record 的 final 组件不等于集合不可变。本文用 ArrayList、unmodifiableList 和 List.copyOf 对比可变、只读视图与防御性拷贝,帮助排查 Record 中集合被外部修改的问题。359 收藏 -
Java Vector API 处理非整数倍数组长度时,用 VectorSpecies.indexInRange 生成尾部 Mask,安全完成加载、计算和写回,并对比 loopBound 加标量尾循环的适用边界。358 收藏 -
Java 泛型 record pattern 会先根据选择器的静态类型推断记录类型参数,再把适配后的组件类型交给 var。本文用 Box、显式写法和嵌套模式说明推断链、选型方法及泛型擦除边界。 357 收藏 -
已知 HashMap 的预计映射数时,不要直接把条目数当初始容量;本文用默认负载因子 0.75 说明估算公式、JDK 19+ 的 newHashMap 和容量过大的代价。350 收藏 -
Java Files.find 和 Files.walk 都能搜索文件树,但过滤条件的落点不同:属性条件优先放进 find,路径流组合和后续转换更适合 walk。本文用可关闭资源的示例说明 maxDepth、BasicFileAttributes、filter 和异常边界。348 收藏 -
Java Pattern 的 UNICODE_CHARACTER_CLASS 只负责让 \d、\s、\w 等预定义字符类采用 Unicode 语义;如果规则只针对字母、脚本或数字属性,可直接使用 \p{...}。本文用边界样例说明如何选择编译标志,避免正则匹配范围意外放大。347 收藏 -
Files.walk 返回的 Stream会持有遍历目录的资源,正确做法是用 try-with-resources 包住完整操作,并区分创建、懒遍历和关闭阶段的异常。 347 收藏 -
Java record 适合表达由多个字段组成的 Map key 值对象,因为它按组件生成 equals 和 hashCode;本文同时说明浅层不可变、集合组件和防御性拷贝的边界。346 收藏 -
围绕 FileChannel、ByteBuffer 和 transferTo,讲清 Java NIO 大文件传输的缓冲控制、部分读写处理、资源关闭与验收边界。346 收藏 -
围绕 Java record 的紧凑构造器说明组件校验、参数归一化、隐式字段赋值、重载构造器委托与 List.copyOf 防御性复制的适用边界。345 收藏 -
Java Stream.toList() 返回的是不可修改 List,直接 add 会抛出 UnsupportedOperationException。本文对比 toList、Collectors.toList 和 toCollection(ArrayList::new),说明需要追加元素时的正确写法。344 收藏 -
讲清 Java Files.mismatch 如何返回两个文件首个不同字节的位置,以及完全相同、前缀相同但长度不同、文本偏移和并发修改时的边界。342 收藏 -
Java 25 的 StructuredTaskScope 通过 fork、join 和 close 管理并发子任务:失败或超时可以取消同组任务,但子任务仍需正确响应中断,close 才能真正收口。341 收藏 -
文章 · java教程 | 3星期前 | 异常处理 · 并发编程 · api设计 · Java教程 · CompletableFuture · java 异常处理 异步编程 completablefuture Handle 统一结果
用 CompletableFuture.handle 同时处理成功值和异常,把异步调用统一转换为稳定的业务结果对象,并对比 exceptionally、whenComplete 的适用边界与常见误区。338 收藏 -
Java NIO WatchService 默认只监听已经注册的目录。本文用递归注册、动态补注册和 WatchKey 映射解决子目录事件遗漏。338 收藏