代码之家  ›  专栏  ›  技术社区  ›  namin

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

  •  1
  • namin  · 技术社区  · 16 年前

    T . 我的API的用户将传递给我一个 Class<? extends T> 我会打电话给你的 newInstance() (第一部分)。我如何确保扩展的类 T 有一个不带参数的构造函数吗?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Bozho    16 年前

    在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?
        }
        ...
    }
    
        2
  •  1
  •   Woot4Moo    16 年前

    super 调用构造函数的父关键字