You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

根据文件读取行数创建对应数量Employee对象的代码是否正确?

你的代码存在以下几个问题,无法正常达到预期效果:

  • 1. 成员变量被局部变量覆盖(核心错误)
    你已经在类中提前声明了成员变量 private ArrayList<Employee> employeeList;,但在构造方法中又重新声明了同名的局部变量 ArrayList<Employee> employeeList = new ArrayList<>();,这会导致你循环添加的所有Employee对象都仅存在于局部变量中,类的成员变量始终为null,构造方法执行完后外部根本拿不到解析后的员工列表。
    修复方式:把构造方法里的局部变量声明去掉,直接给成员变量赋值即可:
employeeList = new ArrayList<>();
  • 2. 原始类型使用带来的类型安全问题
    你声明的行集合 private ArrayList lines; 没有指定泛型,属于原始类型使用,既会触发编译警告,也可能在后续读取行内容时出现类型转换异常,建议修改为指定存储字符串的泛型:
private ArrayList<String> lines;
  • 3. FileReader方法调用的兼容问题
    JDK自带的java.io.FileReader没有getLines()方法,如果你使用的是自己封装的自定义FileReader工具类可忽略该条,如果是用的JDK原生类,这个写法会直接编译报错。如果是用原生API实现按行读文件,建议用BufferedReader的lines()方法更稳妥。
  • 4. 资源与异常处理缺失
    当前代码没有处理文件读取过程中可能出现的IO异常,也没有对文件流做关闭处理,容易出现资源泄漏。建议要么在构造方法签名上声明抛出对应的异常,要么内部加try-catch做异常捕获处理,读取完文件后及时关闭流资源。
  • 可选优化点
    循环遍历的写法可以简化为增强for循环,更易读也能避免下标越界风险:
for (String line : file.getLines()) {
    employeeList.add(new Employee(line));
}

内容的提问来源于stack exchange,提问作者haris faizal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 07:09:03