gpt4 book ai didi

java - 如何强制实现接口(interface)的类或扩展抽象类的子类必须提供默认构造函数?

转载 作者:行者123 更新时间:2023-11-29 06:19:11 24 4
gpt4 key购买 nike

我已经指定了一个接口(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com