-
调用list.length会报错,因为List是对象,没有length属性;数组才有length字段,而List使用size()方法获取元素个数,二者类型不同、不可互换。
-
Files.walkTree为什么总抛出AccessDeniedException因为Files.walkTree默认不处理权限拒绝,遇到无读权限的子目录或文件直接中断遍历。这不是bug,是设计使然——它把错误当作“遍历失败”而非“跳过继续”。必须传入自定义FileVisitor实现,在visitFileFailed方法里显式返回FileVisitResult.CONTINUE别用SimpleFileVisitor的默认实现,它的visitFileFailed直接抛异常
-
MapStruct编译不生成实现类的根本原因是未配置annotationprocessor;Maven需同时引入mapstruct和mapstruct-processor(scope=provided),IDEA要启用AnnotationProcessors,Gradle需添加annotationProcessor依赖。
-
JavaFX11+需手动配置模块路径和依赖模块:下载SDK后,--module-path指向lib目录,--add-modules需显式列出所有用到的模块(如javafx.controls,javafx.fxml),且参数顺序必须在-cp之后、主类之前。
-
工厂模式通过封装对象创建过程,使调用者无需依赖具体类,仅通过统一接口获取实例,降低耦合、提升扩展性。1.解耦对象创建与使用:工厂类负责实例化具体产品,使用者面向接口编程,避免直接new导致的强依赖。2.支持开闭原则:新增产品时只需扩展工厂逻辑,无需修改客户端代码,如Factory.create("C")可透明支持新类型。3.常见形式包括简单工厂(集中创建)、工厂方法(子类决定创建)、抽象工厂(创建产品族)。4.广泛应用于JDBCDriverManager、SpringBeanFactory、日志框架等场景
-
通过配置maven-javadoc-plugin的includeDependencySources和dependencySourceIncludes,可将依赖模块(如模块B)的源码及JavaDoc自动合并到当前模块(如模块A)生成的文档中,实现跨模块类型链接与完整API参考。
-
instanceof是Java中唯一能安全判断对象运行时实际类型的运算符,用于Object或父类/接口引用需确认具体子类时,语法为objectinstanceofType,返回boolean,null时恒为false,不兼容类型编译报错。
-
推荐使用SLF4J+Logback组合,因其性能好、配置灵活且为SpringBoot默认方案;若需兼容Log4j2.x,则通过SLF4J桥接并排除默认日志依赖,同时避免多绑定冲突。
-
ArrayDeque性能高、内存占用少,支持双端操作,推荐用于单线程高效队列实现。
-
用异步生成器封装游标分页流,内部维护cursor状态,按需yield整页数据,前端用forawait消费,支持中断、错误捕获与取消,避免状态复用和无限请求。
-
Java方法不能原生返回多个值,但可通过泛型元组(如Pair/Triplet/Record)类型安全地封装异构值;泛型方法自动推断类型,上界限定增强约束,record更推荐用于Java14+。
-
结论:UID不匹配的根源是未显式声明serialVersionUID且类结构发生JVM认定的不兼容变更;验证用serialver命令比日志更准,需对比报错中expected/got值;即使声明UID,final类继承、IDE生成后修改类、多模块UID不一致仍会失败;设1L有静默风险,长期序列化应全量显式声明并CI检查。
-
在WSL中配置Java开发环境需先安装OpenJDK,如sudoaptinstallopenjdk-17-jdk,再设置JAVA_HOME和PATH环境变量,编辑~/.bashrc文件并加载配置,最后通过java-version验证;推荐使用SDKMAN管理多版本JDK以提升开发灵活性。
-
活锁是线程持续运行但业务无进展的状态,表现为反复tryLock失败后主动让出并重试,如迎面行人不断侧身却无法错开;其根源在于对称退避逻辑导致负反馈循环,需通过随机退避、重试上限和使用JDK并发工具来破局。
-
HandlerInterceptor的preHandle不生效主因是未注册到SpringMVC拦截器链,需用@Component标记并实现WebMvcConfigurer重写addInterceptors方法显式注册。