2016-01-20 200 views
0
@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()需要什么?为什么要在实体类中添加super()?

+6

没有必要。 –

+0

听起来像是一个非问题。我会问作者他们是怎么想的。 – ChiefTwoPencils

回答

1

没有必要,因为您已经确定super用于调用直接父类,并且因为没有直接父类,所以没有必要。

Javadoc说:

注意:如果一个构造函数不显式调用父类的构造函数 ,Java编译器会自动插入到超类的 无参数的构造函数的调用。如果超类没有 有一个无参数的构造函数,你会得到一个编译时错误。 对象确实有这样的构造函数,所以如果Object是唯一的 超类,则没有问题。

+0

确实有直接的父母课程。它是'对象'。而不需要调用'super()'的原因是因为如果编译器不存在,编译器会自动内联该调用。 –

3

没有必要。如果省略它,编译器会自动将调用插入到超类的默认无参数构造函数中(在这种情况下为Object)。

请注意,如果您的实体确实扩展了特定的类,也会出现这种情况。曾经使用super(...)的唯一原因是调用非默认的超类构造函数(即需要参数的构造函数)。

0

是的,你是正确的超级用于调用直接的父类。但是这里不需要

因此,你可以使用下面的代码:

public Employee(int eid, String ename) { 
     this.eid = eid; 
     this.ename = ename; 
    } 
相关问题