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

Jos*_*oon 9 java generics java-8 default-method

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

我试过了:

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

    }
...
Run Code Online (Sandbox Code Playgroud)

<identifier> expected从Netbeans 获取错误

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

更新

我发现自己的代码存在问题.我在用

gson.fromJson(new String(data), InterfaceName.class);
Run Code Online (Sandbox Code Playgroud)

代替

gson.fromJson(new String(data), ClassName.class);
Run Code Online (Sandbox Code Playgroud)

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

tho*_*ens 7

不,这是不可能的.

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

如果希望实现具有"默认构造函数",则可能需要使用抽象类.

  • 如果 java 有真正的枚举,我会同意“1.”。但是你不能扩展枚举,如果你想向你自己的枚举添加一些功能,那么你就会被接口卡住。是的:那么默认构造函数就有意义了。当您想继承静态方法时,您会得到同样的“毫无意义”,这在某些情况下很有意义。 (2认同)