-
子类重写方法时,只能抛出父类方法声明的检查型异常或其子类,不可新增检查型异常,但可自由抛出运行时异常;若父类方法未声明检查型异常,子类也不得声明,以确保多态调用的安全性。
-
自定义异常能提升Java代码可读性和维护性,通过命名明确异常语义,如UserAlreadyExistsException;继承Exception或RuntimeException并封装错误信息;统一组织在exception包中,建立BaseBusinessException基类;结合枚举管理错误码;合理控制异常数量,在业务层主动抛出并包装底层异常,使错误处理更清晰可控。
-
必须调用setAccessible(true)才能反射调用方法,否则抛IllegalAccessException;需处理InvocationTargetException包装、参数类型匹配、模块化访问限制及Method缓存优化。
-
StringJoiner是Java8引入的专用于结构化字符串拼接的工具类,支持分隔符、前缀、后缀、空值定制、合并及长度统计,底层基于StringBuilder实现,轻量高效且线程不安全。
-
JavaSoundAPI无法直接剪辑音频,需手动计算帧数定位并读写PCM数据;仅原生支持WAV/AIF等格式,MP3/FLAC需第三方库;写入必须用WAV且AudioFormat严格一致。
-
企业级缓存须分层选用引用类型:强引用仅限核心上下文,软引用用于高价值可重建热数据,弱引用用于无重建成本临时数据,并需ReferenceQueue清理幽灵引用,叠加LRU/LFU限容及监控灰度。
-
Eclipse是绿色免安装IDE,解压即用,前提是正确安装并配置JDK;下载官方ZIP包、解压至无中文无空格路径、启动后配置工作空间和InstalledJREs为已装JDK、设UTF-8编码,新建Java项目运行“Hello,Eclipse!”验证成功。
-
手动定义serialVersionUID可确保序列化兼容性,避免因类结构变化导致反序列化失败。Java默认生成的ID依赖类名、字段等信息,编译环境或代码微小改动均使其改变,易引发InvalidClassException。显式声明后,可在兼容性变更时主动控制ID更新,保留原ID则允许旧版本读取新对象,提升系统稳定性。同时减少运行时反射计算开销,增强代码可读性与维护性。IDE通常提示添加,建议所有可序列化类均显式定义该字段,成本低且能有效防止分布式或持久化场景下的数据兼容问题。
-
Semaphore在低代码中不参与Java→JSON转换,仅限流并发转换任务;典型用于批量导出、嵌套序列化、脚本沙箱执行;应单例托管、acquire/release配对、避免脚本内操作。
-
Arrays.asList返回的列表是原数组的视图,非独立副本,不支持增删操作,修改会同步到原数组。
-
execute()提交Runnable时异常会直接穿透至线程层面,触发默认UncaughtExceptionHandler打印堆栈并终止工作线程,线程池随后新建线程补位;因Runnable.run()不支持throws,unchecked异常未捕获即导致线程立即终止,这是ThreadPoolExecutor的主动设计而非bug。
-
不能。GCViewer仅解析JVMGC日志中的暂停事件、频率和堆变化,不接入请求时间序列或业务指标,无法直接计算GC对P99延迟的贡献,需结合业务响应时间与GC暂停数据手动估算。
-
Random.nextInt仅支持单参数上界,生成[min,max]需用nextInt(max-min+1)+min;ThreadLocalRandom原生支持双参数且线程安全;用户输入需校验边界;业务还需考虑去重、加权等语义约束。
-
Phaser不适用于HTML安全审计,它专为2D游戏开发设计,不具备HTML解析、XSS检测、DOM净化或语义分析能力,无法替代DOMPurify等专业安全库。
-
VectorAPI在JDK21中虽为正式特性,但需满足无分支、数组长度可静态估算、内存对齐、连续数组访问等结构约束,否则JIT将静默退化为标量循环;常见失效原因包括混用if/try-catch、偏移未对齐、跨对象字段访问等。