Java 有没有办法向接口添加默认构造函数

Java 有没有办法向接口添加默认构造函数,java,generics,java-8,default-method,Java,Generics,Java 8,Default Method,Java 8现在添加了默认方法,有没有办法创建默认构造函数 我试过: public interface KadContent<T> { public default KadContent() { } ... 而不是 gson.fromJson(new String(data), ClassName.class); 因此,即使子类有默认构造函数,反序列化代码也是不正确的。但是默认构造函数的问题仍然存在。在接口中提供构造函数是没有意义的 检查提供默认的ini

Java 8现在添加了默认方法,有没有办法创建默认构造函数

我试过:

public interface KadContent<T>
{
    public default KadContent()
    {

    }
...
而不是

gson.fromJson(new String(data), ClassName.class);

因此,即使子类有默认构造函数,反序列化代码也是不正确的。但是默认构造函数的问题仍然存在。

接口中提供
构造函数
是没有意义的


检查提供默认的
initialize()
方法是否有意义。

您需要将默认构造函数添加到要序列化的类中。

否,这是不可能的

  • 它在接口中没有意义
  • 如果您实现了一个接口,那么该类已经有了一个默认构造函数(没有参数的构造函数)

  • 如果您希望实现有一个“默认构造函数”,您可能需要使用一个抽象类。

    当对象出现在图中,并且接口的对象不能被构造这一事实是正确的,无论是Java、C#还是Java8


    所以。。。如果您有任何想要在接口级别默认定义的功能,Java8引入了。

    是的,有点!你可以做:

    public interface MyInterface {
      MyInterface NO_OP = new MyInterface() {};
    }
    

    接口不应该有构造函数。它们不是对象创建的一部分。他们应该在双方之间保持合同。默认的构造函数意味着什么?它会创建一个什么样的实例?好吧,Gson需要它,这就是我对它的全部需求。这没有意义。我假设您需要将一个具体类传递给InstanceCreator,而不是接口我实际上正在尝试在接口中编写一个默认方法来处理序列化/反序列化,或者我应该考虑使用一个抽象类来代替它吗?我这样做了,但仍然得到错误,我想我必须将序列化代码移到类而不是interfacedepends,如果它是自定义序列化,那么接口可以将方法定义为writeObjectData(DataOutputStream dos)和readObjectData(),您记得在类中公开noArg构造函数吗?默认值为
    initialize()
    方法在将此接口类放在堆上时是否自动调用?否,由您来调用initialize(),例如,在工厂中,如果java具有真实的枚举,我同意“1”。但是您不能扩展枚举,如果您想在自己的枚举中添加一些功能,那么您将无法使用接口。是的:那么默认构造函数就有意义了。当你想要继承静态方法时,你会得到同样的“它没有意义”,这在某些情况下很有意义。问题是,根据定义,接口不提供任何功能。当然,这在默认方法之后有所改变。但是使用默认方法,您不能直接更改对象的状态。实现定义了哪些状态是可能的(通过定义成员变量),而不是接口。接口只指定输入和输出,而实现细节则委托给实现。因此,提供默认构造函数毫无意义,因为您无法设置或更改其中的任何变量。
    public interface MyInterface {
      MyInterface NO_OP = new MyInterface() {};
    }