簡體   English   中英

在 java 中將一種類型的列表轉換為另一種類型

[英]converting list of one type to another in java

我有一個文件類型列表,我需要將其轉換為另一種類型。 但它給出了一個錯誤Attempt to invoke interface method 'java.util.stream.Stream java.util.List.stream()' on a null object reference

我有這個要轉換的非空列表“文件”

List<File> files = FileUtils.listFilesInDirWithFilter(directory,fileFilter,true);

List<MyClass> customer = files.stream()
                            .filter(MyClass.class::isInstance)
                            .map(MyClass.class::cast)
                            .collect(Collectors.toList());

有什么辦法可以將其更改為我需要的類型嗎?

我想你可以使用這個:

files.stream()
        .map(aClass -> instantiateClass(aClass, "message"))
        .filter(Objects::nonNull)
        .findFirst()
        .orElseThrow(() -> new CustomException("blabla"));

方法instantiateClass

private MyClass instantiateClass(final Class<?> aClass, final String message) {
MyClass returnedClass= null;
try {
  returnedClass = (MyClass) aClass
      .getDeclaredConstructor(String.class) // should contain the same parameters count and types like your constructor in MyClass
      .newInstance(message);
} catch (Exception e) {
  log.error("The declared constructor for class {} was not found", aClass.getName());
}
return returnedClass;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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