Java 函数的类型,它采用类作为参数并返回该类的实例

问题描述 投票:0回答:1

我知道我可以有一个函数,它接受一个类并返回一个用该类参数化的实例,就像这样

public <T> Broker<T> apply(Class<T> clazz){
   //code
}

我的问题是我的班级如何实现

Function<T,R>
? 以下不起作用:

class MyClass implements Function<Class<?>, Broker<?>>

这也不行,因为我的类不能参数化为一种类型,并且单个实例将服务于不同的类

class MyClass<T> implements Function<Class<T>, Broker<T>>
java generics
1个回答
0
投票

以下完整的可执行示例演示了您尝试做的事情确实是可能的。我使用

List
而不是
Broker
,这样它就不需要任何外部依赖项,但概念是相同的。

public class MyClass implements Function<Class<?>, List<?>> {
    public static void main(String[] args) {
        MyClass app = new MyClass();
        List<?> x = app.apply(AtomicInteger.class);
        System.out.println(x);
    }

    @Override
    public List<?> apply(Class<?> aClass) {
        try {
            return List.of(aClass.getConstructor().newInstance(), aClass.getConstructor().newInstance());
        } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
            throw new RuntimeException(e);
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.