审查生成的 CSV 行导入器

来自 Java 17 新特性
Java 25 LTS 高级 6分钟 找出 5处问题

在这段生成的导入器进入 Java 17 服务前,对它进行审查。

从不可信的两列 CSV 行导入唯一 ID;拒绝无效行但不暴露其内容;返回不可变结果;并以稳定 Java 17 源码编译。

Java
import java.util.*;
public class GeneratedImporter {
    sealed interface ImportResult permits Imported, Rejected {}
    record Imported(List<String> ids) implements ImportResult {}
    record Rejected(String message) implements ImportResult {}

    static ImportResult importRows(List<String> rows) {
        var ids = new ArrayList<String>();
        for (String row : rows) {
            if (row.isBlank()) {
                return new Rejected("Bad row: " + row);
            }
            String id = row.split(",")[0].trim();
            if (!ids.contains(id)) ids.add(id);
        }
        return new Imported(ids);
    }
    static String message(ImportResult result) {
        return switch (result) {
            case Imported imported -> "Imported " + imported.ids().size();
            case Rejected rejected -> rejected.message();
        };
    }
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误