-
外部类只能是public或包私有;内部类可使用任意访问修饰符,其private仅限外部类内访问;编译器为内部类访问外部类private成员生成合成方法。
-
Java类命名须大驼峰且与文件名严格一致;包名全小写;字段优先privatefinal;构造函数禁业务逻辑,用构造器注入;方法遵循单一职责,参数少而语义清。
-
应安装java-17-openjdk-devel包,它包含javac、javadoc、jar和头文件;仅装java-17-openjdk运行时会导致javac命令未找到。
-
VSCode中JUnitJupiter测试失败主因是pom.xml依赖配置不当、JavaTestRunner插件未启用或项目结构不规范;需确保junit-jupiter版本≥5.10.0、scope为test、补全junit-jupiter-engine和junit-jupiter-params依赖,并检查JDK一致性及module-info.java配置。
-
最直接输出完整堆栈的方式是调用异常对象的printStackTrace()方法;需注意其默认输出到System.err、不适用于日志集成且多线程下可能混杂。
-
finally在System.exit、致命错误、Thread.stop()、kill-9时完全不执行;finally中return会无条件覆盖try/catch的返回值;try-with-resources比手动finally更可靠,因编译器自动处理异常抑制且无需判空。
-
Java进程默认不生成coredump是因为JVM启动时调用prctl(PR_SET_DUMPABLE,0)主动禁用,防止堆内存敏感信息泄露;需显式添加-XX:+CoreDumpOnCrash等参数并确保core_pattern路径、权限、磁盘空间等配置正确。
-
IntelliJIDEA和Eclipse中Javadoc不显示的解决方法:需正确配置JDK的docs/api路径,确保版本匹配;Eclipse需先附加source再附加javadoc;Gradle项目需启用downloadJavadoc;自定义类需有package-info.java并手动生成Javadoc。
-
接口隔离原则强调客户端不应依赖不需要的接口。通过将大接口拆分为小而专的接口,如员工系统、设备驱动、GUI事件和游戏角色中按需实现,提升灵活性与可维护性。
-
本文介绍如何在SpringBoot中将嵌套配置(如a.b.c)透明地映射为b.c,使@ConfigurationProperties(prefix="b")和@ConditionalOnProperty(prefix="b")正常生效,无需修改第三方库代码或硬编码属性解析逻辑。核心方案是利用YAML原生支持的锚点(anchor)与别名(alias)机制完成属性路径“软重写”。
-
应只捕获具体异常类型,避免捕获Throwable或泛型Exception;受检异常须显式处理而非静默吞掉;finally中勿覆盖原始异常;自定义异常需依场景选择继承RuntimeException或Exception。
-
通过面向对象设计实现图书借阅管理,定义Book类(含书名、作者、ISBN和借阅状态)、User类(管理用户信息及借阅列表)和Library类(统一管理图书与用户),并提供借书、还书、查询等功能,确保状态同步,示例展示了完整借阅流程。
-
应优先用synchronized块保护临界区而非整个方法,避免过度同步;锁对象须私有不可变;简单操作优先用AtomicInteger等原子类;复杂逻辑选ReentrantLock;volatile仅保可见性与有序性,不保证原子性。
-
AtomicReference适合替代单个对象引用的原子读写场景,如状态机切换、缓存替换、单例懒加载;不适用于多字段联动更新、事务操作或I/O临界区。
-
最常用且最安全的方式是使用stream().filter(),它声明式过滤、不修改原集合、需collect()获取结果,null时应先判空;就地删除用removeIf()或Iterator.remove();Map过滤需先转entrySet()。