类类型作为Java中的参数

ArkadiuszK

我有一个方法:

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());
}

可能吗?我怎样才能做到这一点?

约阿希姆·绍尔(Joachim Sauer)

您必须提供一个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个数字值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章