有没有办法将默认构造函数添加到接口

时间:2014-04-02 12:06:41

标签: java generics java-8 default-method

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

我试过了:

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

    }
...

从Netbeans

获取错误<identifier> expected

为什么需要?我正在使用Gson序列化对象并获得“无法调用no-args构造函数..”错误,我确实知道我可以使用Gson来解决这个问题{ {3}}。但有没有办法创建默认的构造函数?

更新

我发现自己的代码存在问题。我正在使用

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

而不是

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

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

5 个答案:

答案 0 :(得分:7)

不,这是不可能的。

  1. 在界面中没有意义
  2. 如果实现了接口,则该类已经有一个默认构造函数(没有参数的构造函数)
  3. 如果希望实现具有“默认构造函数”,则可能需要使用抽象类。

答案 1 :(得分:2)

Constructor中提供Interface没有意义。

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

构造函数是指对象进入画面时,无法构造接口对象的事实是SOUND,无论是Java,C#还是Java8

所以......如果你有任何你想要在接口级别默认定义的功能,Java8引入了Default Methods的概念。

答案 4 :(得分:0)

是的,有点!您可以这样做:

public interface MyInterface {
  MyInterface NO_OP = new MyInterface() {};
}
相关问题