-
File.isHidden()不检测系统级隐藏属性,Windows下检查Hidden标志,macOS/Linux仅判断文件名是否以.开头;应优先用Files.getAttribute获取dos:hidden(Windows),macOS需调用xattr或stat命令,跨平台需分层降级处理。
-
Collectors.toMap抛出IllegalStateException:Duplicatekey是因Map的key必须唯一,而输入key列表存在重复值;解决方式包括校验数据、使用mergeFunction处理冲突或显式指定map工厂。
-
abstract类必须被继承才能实例化,不能直接用new创建对象;它可含普通方法、静态方法、构造器等,但抽象方法无方法体且不能为private/final/static;子类须实现全部抽象方法或声明为abstract;与interface相比,abstract类支持代码复用和“is-a”关系,而interface适合“can-do”能力及多实现。
-
isEmpty()更快但差异可忽略,JVM优化后性能基本无差别;语义上isEmpty()更清晰安全,新代码应优先使用。
-
IOException是Java网络文件操作中的核心异常,涵盖连接中断、文件不存在、权限不足等情况。通过try-with-resources可自动管理资源释放,避免泄漏;结合try-catch捕获SocketTimeoutException、ConnectException、FileNotFoundException等具体子类,实现精准错误处理。设置超时、重试机制、记录日志、提供用户友好提示,并在UI中使用异步任务,能显著提升程序健壮性与用户体验。
-
IdentityHashMap通过==比较内存地址判断键相等,绕过equals()和hashCode(),适合需区分同内容不同实例的场景(如数组映射);普通HashMap因数组hashCode基于内容而equals基于引用,易导致查找失败或覆盖。
-
getDeclaredConstructor()找不到私有构造函数最常见的原因是参数类型不匹配(如int.class与Integer.class混淆)或目标构造器不在当前类声明中;必须用setAccessible(true)才能调用,且需注意Java9+模块封装和Android兼容性问题。
-
any()遇真即真、全假才假,all()全真才真、遇假即假;空序列时any返回False、all返回True;推荐用生成器表达式提升效率,注意falsy值的业务含义并做预处理。
-
BigDecimal.precision()返回数值的有效数字总位数,如"123.45"为5、"0.00123"为3、"100.00"为3,用于审计中校验最大有效位数(如金融系统限15位),需区别于scale(小数位数)和字符串长度。
-
在Java中,使用文件流复制文件是常见且有效的方法。1.使用FileInputStream和FileOutputStream读取和写入文件。2.使用缓冲区提高效率,避免内存溢出。3.注意缓冲区大小、异常处理和资源管理。4.高级用法可使用FileChannel和transferFrom方法提升性能。
-
Java中方法内重新赋值数组引用不会影响调用方的原始数组变量,因为传递的是引用的副本;要实现void方法下的原地更新,必须直接修改原数组元素,而非替换引用。
-
Record是Java14引入、16正式发布的不可变数据载体语法糖,自动生成构造器、final字段、getter、equals、hashCode和toString,专为DTO场景设计,替代手写或Lombok方案。
-
Java中Stack类不推荐使用,因其是JDK1.0遗留类,违背面向对象原则,继承Vector导致语义混乱、同步开销大;官方推荐用Deque接口及ArrayDeque实现替代,性能更优、语义更清晰。
-
tryAcquire无法实现租约机制,因其仅为无状态布尔判断函数,不支持超时控制、时间感知、自动续期及过期释放等租约核心语义。
-
接口回调是方法执行结果的反向通知,如EventSource通过OnEventListener将事件通知给监听者;观察者模式则基于一对多依赖实现状态同步,支持多个观察者自动接收主题变更通知,两者均通过接口实现解耦,但观察者更适合多方响应场景。