我知道我可以有一个函数,它接受一个类并返回一个用该类参数化的实例,就像这样
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>>
以下完整的可执行示例演示了您尝试做的事情确实是可能的。我使用
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);
}
}
}