我正在寻找一种方法来返回一个扩展了 abstract
的类型的新实例。 Java 中的类,理想情况下没有来自静态方法的反射。
所以我希望能够调用:
SomeClass anInstanceOfSomeClass = Builder.build<SomeClass>()
我希望我能做这样的事情:
public class Builder {
public static <T extends SomeBaseClass> T build() {
return new T(); // cannot instantiate type T
}
}
我看过几个使用 Supplier
的例子但它们往往基于非静态,使用通用类而不是方法和/或需要传入 ctor
作为语法上似乎有点复杂的参数。
感觉这应该很简单,但来自 C# 我不太熟悉在 Java 中实现此目的的最佳方法。任何想法表示赞赏。
最佳答案
供应商在这里很好:
public static <T extends SomeBaseClass> T build(Supplier<T> supplier){
return supplier.get();
}
它避免了反射和异常处理。
并使用它,例如:
SomeClass anInstanceOfSomeClass = Builder.build(SomeClass::new);
关于java - 静态助手中的通用类型工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54142464/