我已经指定了一个接口(interface)(尽管如果有帮助我可以将它更改为抽象类),比如 T
.我的 API 的用户将传递给我一个 Class<? extends T>
我会调用newInstance()
(我无法更改那部分)。我如何确保扩展 T
的类有一个不带参数的构造函数吗?
最佳答案
您不能在 Java 中强制执行任何构造函数签名。
您最好在运行时检测问题并抛出/传播 RuntimeException
。例如,这就是序列化机制的作用。
更进一步 - 如果可能的话,放弃对 .newInstance()
的依赖并制作注释 @FactoryMethod
并将其用于 static
将成为工厂方法的方法:
public class Foo {
@FactoryMethod
public static Foo createFoo() {
return new Foo();; // or use another constructor, if there is no default?
}
...
}
关于java - 如何强制实现接口(interface)的类或扩展抽象类的子类必须提供默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3847100/