-
Java泛型擦除是编译时特性,为兼容旧版本牺牲运行时类型信息。1.核心限制包括无法运行时获取泛型类型、无法创建泛型数组与实例、泛型方法重载冲突及静态部分不支持泛型。2.解决方案包括:传入Class<T>对象处理单层泛型;使用通配符(?extendsT和?superT)增强集合灵活性;复杂泛型通过类型令牌(TypeToken)保留完整类型信息;反射作为最后手段应对底层需求。这些策略并非绕过擦除,而是与其共存并构建安全代码。
-
答案:Java实现图书推荐系统需定义图书和用户模型,采用基于内容或协同过滤算法。首先构建Book和User类,包含基本信息与阅读历史;接着通过统计用户阅读类别实现基于内容的推荐;再利用Jaccard相似度找出兴趣相近用户进行协同过滤;最后整合策略,新用户用内容推荐,老用户用协同过滤,结合接口统一管理。初期可用集合与流处理,后期可引入Mahout优化。
-
Java异常可存入数据库,需聚焦业务关键路径、未捕获运行时异常、自定义业务异常及合规审计场景,结构化存储并异步落库以保障性能与可靠性。
-
Callable能返回值且可抛受检异常,Runnable不能;但Thread不接受Callable,须通过ExecutorService.submit()获取Future并调用get()获取结果或异常。
-
Java中关系运算符用于比较两个值,返回布尔结果。包括==、!=、>、<、>=、<=,适用于基本类型直接比较,对象比较需用equals()避免引用地址误判,浮点数应使用误差范围判断相等性。
-
ArrayList比HashMap更合适存账目,因其天然保持录入顺序、避免键维护问题,且增删查改更自然;需重写equals/hashCode,优先用增强for或stream过滤,日期查询可缓存TreeSet;文件保存应原子写入JSON;金额输入须正则校验或格式化控件,禁用float;导出Excel需设中文字体和公式;CSV更稳妥;规则宜简单配置化。
-
手写字符串转数字需谨慎处理符号位、溢出及非法字符:先跳过前导空格,识别正负号,再逐位用Character.isDigit()校验并累加;溢出判断须提前进行,避免乘法后溢出。
-
Java应用异常必须过滤重写,禁止直接返回Exception.toString()或堆栈;应统一拦截转换为业务错误码+模糊提示,日志需记录完整堆栈并脱敏敏感信息,第三方SDK异常须显式捕获、安全包装且保留cause链。
-
答案是Java中switch语句用于多分支选择,支持byte、short、int、char、对应包装类、enum和String(Java7+),不支持long、float、double、boolean;基本语法为switch(表达式)匹配case值,break防止穿透,default处理默认情况;使用时需注意case值为常量、避免fall-through、default位置任意、表达式非null。
-
Desktop.getDesktop().browse()报java.awt.HeadlessException是因在无图形界面环境(如Linux无X11、Docker默认)下运行,需先调用isDesktopSupported()判断支持性,再检查isSupported(Desktop.Action.BROWSE),否则必然失败。
-
instanceof用于运行时判断对象是否为某类或其子类实例,但不适用于基本类型、null及泛型擦除后类型;nullinstanceof任意类型返回false,右操作数为未实现接口或非子类时也静默返回false。
-
default方法必须用default关键字显式声明,static方法必须用static修饰且不可被实例调用;二者不能互相调用,多重继承时同签名default方法需显式覆写并指定调用方。
-
答案:系统通过Student、Course和EnrollmentSystem类实现选课管理,支持学生选退课、课程容量控制及可选课程查询,测试用例验证了核心功能。
-
一个类可实现多个接口以支持多重行为继承。Java不支持多继承,但通过implements关键字实现多接口,如Person类实现Runnable和Eatable接口需重写所有抽象方法。从Java8起,接口可定义default方法提供默认实现;若多个接口含同名default方法,实现类必须重写该方法并用InterfaceName.super.methodName()指定调用来源。为避免复杂性,应遵循接口隔离原则,保持接口职责单一,避免过多无关接口导致“胖类”,推荐使用组合优化设计。例如,机器人类可分别实现Mo
-
Java程序打包为JAR后,无法向JAR包内嵌资源(如test.txt)直接写入内容,因为JAR本质是只读ZIP归档;正确做法是将可变数据写入外部路径(如用户目录、临时目录或配置目录),并确保读写路径一致。