现在将默认方法添加到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);
因此即使子类具有默认构造函数,反序列化代码也是错误的。但是默认构造函数的问题仍然存在。
答案 0 :(得分:7)
不,这是不可能的。
如果希望实现具有“默认构造函数”,则可能需要使用抽象类。
答案 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() {};
}