[英]Reading object from file regardless type, inferring reading method from generic type
我目前正在開發一個基於文件的存儲庫,我正在嘗試使其通用。 困境是我如何以合適的方式從文件中讀取。 我嘗試創建一個界面
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 方法將我的文件讀取到 T 數組? 我需要找到一種方法來在每一行上調用我的方法,但我真的不知道如何調用 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
),以便該方法知道如何轉換您的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.