-
File.listFiles()返回null而非空数组,常见于权限不足、路径不存在或非目录,需判空再遍历;Windows路径反斜杠需转义为“\\”或用正斜杠;replaceAll()第一参数是正则,字面量特殊字符须双重转义,简单替换应使用replace();renameTo()静默失败,跨磁盘移动应改用Files.move()并捕获IOException。
-
本文详解Maven项目中如何正确声明和解析仅提供POM文件(不含JAR)的依赖,避免“Couldnotresolvedependencies”错误,并提供type=pom的规范用法、常见误区及工程级替代方案。
-
受检异常包装本质是类型转换而非简单套壳,需保留原始堆栈、语义清晰、不丢失上下文;必须用带Throwable构造参数的方式包装,显式声明构造器,按SQL状态码/错误码分类转换,日志须在包装前用支持多级cause的方式记录,全局处理器避免二次包装,对外API禁止暴露原始SQL或堆栈。
-
能混用,但XML优先级高于注解,同名方法存在XML时注解自动失效;需按功能域切分使用,确保namespace与接口全限定名严格一致,并正确配置XML加载路径。
-
Java编译器按静态类型和实参字面量在编译期确定重载方法,分三步匹配:精确匹配→装箱/拆箱→可变参数;null传参会因多引用类型精确匹配而报歧义错误。
-
Swing定时任务需用javax.swing.Timer或SwingUtilities.invokeLater确保EDT更新;提醒弹窗应传null父组件并调用setAlwaysOnTop(true);日程数据推荐Properties文件。
-
反射调用接口默认方法必须使用实现类的Class对象而非接口Class,因JVM禁止在接口类型上调用invokeVirtual;需用getDeclaredMethod获取方法,传入实现类实例调用,且无需setAccessible(true)。
-
macOS中Java环境失效主因是路径配置错误、Shell未加载或sudo重置环境;需依次检查java-version、$JAVA_HOME、/usr/libexec/java_home-V等命令输出,再按zsh配置、Maven路径冲突、sudo环境隔离三类问题分别修复。
-
JNA比JNI更适合纯Java项目调用本地库,因其无需编写C头文件、编译或打包.so/.dll,仅需Java接口+注解即可运行时自动解析符号;但要求函数签名严格匹配,存在性能开销与内存控制限制。
-
嵌套结果性能更好、N+1问题更少,但需手动对齐字段别名;嵌套查询适合复用SQL、逻辑隔离强的场景。
-
Java异常机制通过try-catch-finally和try-with-resources保障程序健壮性;2.区分检查型与非检查型异常,针对性捕获如IOException;3.避免捕获Exception等宽泛类型,使用多catch块提升可读性;4.finally块用于释放资源,需处理close可能抛出的异常;5.try-with-resources自动管理资源,简化代码并确保释放;6.自定义异常继承Exception或RuntimeException,准确表达业务错误;7.合理抛出与处理异常,结合日志、
-
静态代码块调用外部同步方法会因类初始化锁导致死锁。JVM对每个类加隐式initializationlock,若A类静态块调用B类方法而B又依赖A,则两线程互相等待CLINIT锁,造成启动卡住。
-
Java服务器日志分析需综合异常位置、原因及修复方案:从堆栈底部定位代码行,结合上下文、时间线、调用链与环境状态,交叉验证线索,避免经验误判。
-
Gradle项目导入IDEA后源码目录未识别,需右键src/main/java设为SourcesRoot或刷新Gradle配置;Java版本需同步配置GradleJVM与IDEASDK;依赖红标应重载项目并开启Delegate构建;运行配置须手动指定主类或使用Gradlerun任务。
-
多重catch需遵循“子类在前、父类在后”顺序,否则子类catch不可达;并列无关异常顺序任意;Java7+支持|语法捕获多种独立异常,但不可含父子关系;运行时按实际异常类型匹配。