我有一个方法:
private List<ApplicationForVacancy> createListOfApplicationsForVacancy(List<Document> documents) {
return documents.stream()
.filter(d -> d instanceof ApplicationForVacancy)
.map(d -> (ApplicationForVacancy) d)
.collect(Collectors.toList());
}
但是我想在参数中传递类的名称/类的类型,并像这样返回方法的类型:
private List<TypeOfSomeClass> createList (List<Document> documents, String or Type typeOfSomeClass) {
return documents.stream()
.filter(d -> d instanceof typeOfSomeClass)
.map(d -> (typeOfSomeClass) d)
.collect(Collectors.toList());
}
这可能吗?我该怎么做?
最佳答案
您必须提供一个 Class
对象来声明类型并向该方法添加一个类型参数,如下所示:
private static <T> List<T> filterType(List<?> input, Class<T> clazz) {
return input.stream()
.filter(clazz::isInstance)
.map(clazz::cast)
.collect(Collectors.toList());
}
然后您可以像这样调用该方法:
List<Object> stuff = List.of("String", Integer.valueOf(3), Double.valueOf(42), new Object());
List<String> strings = filterType(stuff, String.class);
List<Number> numbers = filterType(stuff, Number.class);
strings
将仅包含 String
而 numbers
将包含 2 个数值。
关于java - 类类型作为Java中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64622077/