繁体   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