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

标签 java reflection

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

相关文章:

reflection - 如何在 Dart 中动态使用 getter/setter

reflection - kotlin 别名属性委托(delegate)抛出异常

entity-framework - 如何详细记录我的实体错误

java - Android[Java]-如何实例化特定的Bundle对象

jvm - 启动时调用 jar 内方法

java - 将 AAR 与移动优先应用程序连接

c# - 是否可以加快此方法的速度?

java - Android获取ListView同一行的Textview文本

java - zk框架: message 'unknown message code:<code>' instead of standart labels

c# - 区分属性 protected 和 setter protected