-
Java9的List.of()、Set.of()和Map.of()是接口定义的静态工厂方法,非GoF工厂方法模式;它们直接返回JDK内部优化的不可变实现类,构造时校验null和重复元素,适用于小型常量集合。
-
普通枚举无法直接扩展,因其编译时被固定为final类且隐式继承Enum;通过接口统一行为契约(如Operation),让多个独立枚举(BasicOperation、ExtendedOperation)分别实现,即可实现可插拔的混合调用与泛型集合操作。
-
必须手动实现clone()方法,因为Cloneable仅为标记接口,不提供克隆逻辑;Object.clone()是protectednative方法,需重写为public并调用super.clone()才能生效,且仅执行字段级浅拷贝。
-
Condition是Lock配套的条件等待接口,支持多条件分组唤醒;而synchronized仅有一个隐式等待队列。它需通过lock.newCondition()获取,await()/signal()必须在lock()/unlock()内调用,且须用while循环检查条件以防虚假唤醒。
-
关键在选对方法、控住精度、适配场景:金融用DecimalFormat("¤#,##0.00"),统计用"#,##0",Excel需设单元格数字格式,前端优先toLocaleString("en-US");须先安全转换再格式化,显式控制小数位、符号位置与负号规范,注意Locale、性能及前后端职责分离。
-
在表单中传递不可见的业务参数">
<inputtype="hidden">是最直接标准的隐藏参数传递方式,需同时设置name和value,适用于传ID、来源标记等非敏感上下文信息,但必须服务端校验,不可用于敏感数据。
-
@ConditionalOnProperty专为配置驱动开关设计,比自定义@Conditional更安全简洁:内置matchIfMissing、havingValue、多值匹配等健壮支持,避免NPE、类型误判、Bean冲突等问题,且语义清晰、易维护、官方推荐。
-
不能直接用flatMap实现完整拓扑排序,因其仅支持静态嵌套结构的映射扁平化,缺乏图遍历所需的状态管理、环检测、入度更新等能力;真正实现需结合Stream初始化与Kahn/DFS算法手动执行。
-
Character.getType()返回Unicode类别int值,需与Character类常量(如UPPERCASE_LETTER、DECIMAL_DIGIT_NUMBER等)比较才能判断字符类型;直接使用isLetter()、isDigit()等方法更简洁可靠。
-
final修饰方法参数仅禁止对参数变量重新赋值,不阻止修改其指向对象的内部状态;对基本类型锁值,对引用类型只锁引用不锁对象;非线程安全,不影响实参,过度使用降低可读性。
-
try-with-resources底层是编译器将语句重写为带finally的显式close调用,资源须实现AutoCloseable接口,按声明逆序关闭,close异常作为suppressedexception附加到主异常上。
-
Java自定义异常必须以Exception结尾并用大驼峰命名,因JDK、IDE、框架和工具均依赖该后缀识别异常类型;命名需体现具体业务场景,如InsufficientBalanceException;多数业务异常应继承RuntimeException,不加Runtime前缀;包路径要体现领域层级,并封装errorCode字段。
-
一个简易任务分配系统需支持任务创建、分配、查看、状态更新和用户管理。使用Java设计Task和User类分别存储任务与用户信息,TaskManager类通过集合管理数据并提供增删改查方法,结合Scanner实现控制台交互,完成任务生命周期管理。核心逻辑包括任务状态流转、按负责人筛选任务及基本输入处理,适合小型项目协作。后续可扩展持久化存储或Web接口。
-
SecurityException仅在启用SecurityManager时触发,JDK9起废弃、17默认移除、21彻底删除;本地不抛异常因无SecurityManager;常见于遗留Applet、旧Web容器或手动设置;需策略文件配合启动参数复现。
-
Collections.nCopies返回不可变视图,调用add/remove会抛UnsupportedOperationException;需用newArrayList()包装才可修改,且禁用于可变对象。