java - 类类型作为Java中的参数

标签 java oop object methods types

我有一个方法:

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 将仅包含 Stringnumbers 将包含 2 个数值。

关于java - 类类型作为Java中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64622077/

相关文章:

java - Java中的@override和Python中的@decorator的区别

java - 对于页面对象类中的方法,使用 public void 还是 public [页面名称] 更好?

java - 每次循环迭代时更改分配的变量

java - 如何使用更具体的对象家族(A' < : A has many B' <: B)?)扩展对象家族(A 有很多 B)

python - __new__ 在对象创建中没有被调用

java - 使用 xml 中的规则验证 java 对象

java - 仅使用 Spring Security 自定义 token 无状态保护 REST Controller ,同时保持正常状态的完整 Web 登录工作

c++ - 指向基类的唯一指针

VBScript 中的类 : Why do these two examples do the same thing?

Java POI - 从 Excel 文件中读取日期