从文件中读取对象,而不考虑类型,从泛型类型推断读取方法



我目前正在开发一个基于文件的存储库,并试图使其通用化。进退两难的是我如何才能以合适的方式从文件中读取。我试着创建一个类似的界面

public interface SerializableToFile<T> {
Callable<T> objectFromFileLine(String fileLine, String delimiter);
}

并在域的每个对象中实现它,如

public Callable<LabProblem> objectFromFileLine(String fileLine, String delimiter){
return () -> {
String[] components = fileLine.split(delimiter);
LabProblem newEntity = new LabProblem(Integer.parseInt(components[1]), components[2]);
newEntity.setId(Long.parseLong(components[0]));
return newEntity;
};
}

Repository是通用的,扩展SerializableToFile,如

FileRepository<T extends SerializableToFile>

现在的问题是,如何使用objectFromFileLine方法将文件读取到Ts数组中?我需要找到一种方法在每一行上调用我的方法,但我真的不知道如何调用T.objectFromFileLine或类似的东西(静态似乎不起作用(。谢谢

我想你正在搜索这样的东西:

public class FileRepository {
public <T extends SerializableToFile> List<T> readAllLines(File file, SerializableToFile<T> serializableToFile) throws Exception {
List<String> lines = Files.readAllLines(file.toPath());
List<T> result = new ArrayList<>();
for (String line : lines) {
result.add(serializableToFile.objectFromFileLine(line, " ").call());
}
}
}

您需要将转换器作为引用(serializableToFile(传入,以便该方法知道如何转换数据。

最新更新