@Entity
@Table
public class Employee {
private int eid;
private String ename;
public Employee(int eid, String ename) {
super( );
this.eid = eid;
this.ename = ename;
}
}
在这个实体类构造函数中调用super()有什么需要?实际上,super()用于调用直接父构造函数。在这里,我们没有扩展任何类。那么在构造函数中调用super()需要什么?
答案 0 :(得分:3)
没有必要。如果省略它,编译器将自动插入对超类的默认无参数构造函数的调用(在这种情况下为Object
)。
请注意,如果您的实体确实扩展了特定的类,这也是如此。使用super(...)
的唯一原因是调用非默认的超类构造函数(即需要参数的构造函数)。
答案 1 :(得分:1)
没有必要,因为你已经确定super用于调用直接父类,因为没有直接的父类,所以没有必要。
Javadoc说:
注意:如果构造函数没有显式调用超类 构造函数,Java编译器自动插入一个调用 超类的无参数构造函数。如果超级班没有 有一个无参数的构造函数,你会得到一个编译时错误。 对象确实有这样的构造函数,所以如果Object是唯一的 超类,没有问题。
答案 2 :(得分:0)
是的,你是对的超级用来调用直接的父类。但这里不需要。
所以你可以使用以下代码:
public Employee(int eid, String ename) {
this.eid = eid;
this.ename = ename;
}