-
内部类通过隐藏实现细节、限制访问范围和增强封装性来优化代码结构,如私有内部类可访问外部类所有成员且不暴露于外部,静态内部类减少对外部实例依赖,局部与匿名内部类则适用于特定场景的高内聚设计。
-
DecimalFormat.getCurrencyInstance()必须显式传入Locale才能正确适配国家货币格式,否则依赖不可控的JVM默认区域设置;Locale决定格式惯例而非法定货币,多币种场景需结合Currency.getInstance()控制实际币种。
-
Collectors.toMap默认不保证顺序是因为使用HashMap作为底层容器,而HashMap不维护插入顺序;需显式传入LinkedHashMap::new作为mapSupplier,并确保数据源有序(如ArrayList)且提供mergefunction。
-
System.console()在IDE中返回null是因缺乏底层TTY支持,仅在系统终端运行jar时有效;readPassword()返回char[]为安全设计,需手动清零;Windows中文路径会导致编码问题;多环境部署应放弃该API,改用适配方案。
-
不存在“单向分布式标识关联”这一标准术语,真正需解决的是循环引用、更新失步、删除悬挂和测试爆炸等引用网状灾难;应通过删冗余引用、用ID替代对象、关系外置、事件解耦等方式有依据地降维。
-
Optional不能直接封装原始指针,因其仅表达值存在性、无生命周期管理、线程不安全且无法校验有效性;应使用自定义NativeHandle类封装指针并实现AutoCloseable/Cleaner,再用Optional<NativeHandle>安全表达可选原生资源。
-
Method对象不能直接newMethodHandle,因其为不可实例化的final类,必须通过MethodHandles.Lookup的revealDirect()还原为MethodHandle,再按需用reflectAs()适配类型。
-
选择官方OpenJDKLTS版本轻量镜像如openjdk:17-jdk-slim;2.在Dockerfile中集成Maven/Gradle固定版本、配置镜像源、添加调试工具并设置标准工作目录;3.通过CI/CD脚本化构建镜像,打版本标签并推送到私有仓库;4.提供使用文档,明确拉取命令、挂载点和端口;5.指定专人定期更新基础镜像与工具链,建立升级通知机制,持续优化团队开发环境。
-
用数组实现状态机解析器,核心是将“当前状态+输入事件→下一状态+动作”固化为二维转移表,避免if/switch,结构清晰、易维护、执行快;适用于协议帧头等确定性强的解析场景。
-
必须用字符串构造BigInteger,因无BigInteger(long)构造方法;超大整数只能通过newBigInteger("str")初始化;算术运算需调用add、multiply等方法;比较用compareTo,转换用longValueExact;注意字符串输入需trim和校验。
-
代理模式通过代理对象为原对象提供额外功能。静态代理需手动编写代理类,编译期确定,每个目标类对应一个代理类,代码重复;动态代理在运行时生成代理类,JDK动态代理基于接口,通过Proxy和InvocationHandler实现,CGLIB基于继承,使用ASM生成子类,适用于无接口类。两者核心区别在于代理类生成时机与灵活性,动态代理更利于解耦和扩展。
-
使用Collectors.toMap()时若键重复会抛IllegalStateException,需提供合并函数处理冲突;常见策略包括取后者、取前者、累加、拼接或构建集合,且合并函数不可返回null。
-
Java支持引用类型返回值协变:子类重写方法可将返回类型替换为父类返回类型的子类,如Person→Student,但基本类型和void不支持;方法签名其余部分必须完全一致,配合多态可直接获得精确类型。
-
分支结构中用==比较包装类特别危险,因其隐含自动拆箱,-128~127外或null时抛NPE,且null来源隐蔽导致延迟崩溃;应统一用Objects.equals、显式判空或getOrDefault避免拆箱。
-
静态块不适合加载证书,因其在类加载时执行,无法确定文件路径、易因证书未部署而失败,且异常会导致类加载失败;应改用初始化流程如@PostConstruct或main方法加载。