-
泛型类通过类型参数实现类型安全的代码复用,如Box<T>可指定T为String等具体类型;泛型方法在声明中引入类型参数,如printArray<T>(T[]array)可处理不同类型的数组;Java泛型通过类型擦除实现,运行时泛型信息被擦除,导致不能newT()或使用instanceof检查泛型类型;通配符?配合边界extends和super限制类型范围,提升API灵活性与安全性。掌握泛型需多练习定义与使用类型参数。
-
Collectors.toList()返回可变ArrayList,支持重复和null;toSet()返回无序去重Set,遇null抛NPE;toMap()遇重复key抛DuplicateKeyException;joining()遇null直接抛NPE;应依约束选方法。
-
工厂模式解决对象创建的耦合问题,通过工厂统一生成实例,符合开闭原则;策略模式封装可变的行为算法,实现运行时动态切换,避免冗长条件判断。两者结合时,常由工厂创建具体策略对象,既解耦创建过程,又灵活替换行为,提升代码可维护性与扩展性。
-
正确方式是仅添加junit-jupiter依赖,版本推荐5.10.2,配合Surefire3.2.5+插件;需避免JUnit4混用,测试类须public非final,方法publicvoid且加@Test;推荐搭配AssertJ提升断言可读性。
-
类只在首次主动使用时初始化,且加载、验证、准备、解析、初始化五阶段有序进行,解析可延迟至首次使用符号引用时;仅五种情况触发初始化:new指令、读写非final静态字段、调用静态方法、反射Class.forName(默认true)、主类启动。
-
答案:成功运行JavaWeb项目需正确配置Eclipse环境。首先选择EclipseIDEforEnterpriseJavaandWebDevelopers版本或通过Marketplace安装JavaEE工具、WTP及Tomcat集成组件;接着下载并配置Tomcat服务器(建议8.5或9.0版本),在Eclipse的Servers视图中新建服务器并指定安装目录;然后创建或导入DynamicWebProject,设置Targetruntime为已配置的Tomcat,选择合适的DynamicWebModule
-
Java运行时注解需用@Retention(RetentionPolicy.RUNTIME)才能被反射读取,配合反射与动态代理实现事务、权限等逻辑;自定义时须同时满足定义、标记、处理三要素。
-
面向接口编程的本质是“换实现不改调用方”,即通过声明接口类型(如List、UserService)而非具体实现类,使底层实现可替换而不影响调用方代码,适用于多实现或需模拟/隔离测试的场景,避免硬编码实现导致的耦合与维护风险。
-
Collections.reverse()时间复杂度为O(n),适用于大多数列表反转场景,但不支持不可修改列表,需先创建副本;处理大型列表时性能线性增长,可考虑优化策略。
-
SpringBoot接口版本控制的核心在于确保API在演进过程中支持不同版本的客户端,避免旧系统崩溃。1.URI路径版本控制通过在URL中嵌入版本号(如/api/v1/users),实现简单且对客户端友好,但可能导致路由配置膨胀;2.HTTPHeader版本控制利用自定义请求头(如X-API-Version)传递版本信息,保持URL简洁但需要客户端额外设置请求头;3.内容协商版本控制通过Accept头指定版本(如application/vnd.myapi.v1+json),符合HTTP规范但实现复杂;4.
-
Future是异步结果占位符,不执行任务;get()会阻塞且需超时控制,异常包括ExecutionException、CancellationException、InterruptedException;isDone()/isCancelled()仅返回瞬时状态;无回调能力,推荐用CompletableFuture替代。
-
BufferedReader是Java中通过内部缓冲区提升字符流读取性能的包装类,需包装Reader实例(如InputStreamReader+FileInputStream),推荐显式指定UTF-8编码,优先使用try-with-resources和readLine()按行读取,避免混用读取方法及默认编码导致乱码。
-
Java集合框架是替代数组的标准化体系,解决长度固定、操作繁琐等问题,提供自动扩容、统一遍历与排序机制;分Collection(List/Set/Queue)和Map两大主干,接口定义行为,实现类决定效率,随JDK演进持续增强泛型、函数式与不可变支持。
-
try-with-resources是Java7引入的自动资源管理机制,确保实现AutoCloseable接口的资源在使用后自动关闭。其基本语法为在try后括号内声明资源,如文件流、数据库连接等,资源会按逆序自动关闭,无需手动调用close()。支持多个资源管理,且能正确处理异常——若try块和close()均抛异常,try块异常为主异常,close异常被抑制并可通过getSuppressed()获取。自定义类只需实现AutoCloseable接口即可支持该特性。此机制简化代码、避免资源泄漏,提升程序安全
-
基本数据类型比较用==和!=,浮点数需考虑精度误差,推荐使用容差范围判断相等;大小比较可借助包装类的compareTo方法,但注意自动装箱影响性能,高频操作应优先使用原始类型和直接运算符。