簡體   English   中英

從文件中讀取對象而不考慮類型,從泛型類型推斷讀取方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM