2016-01-20 40 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; 
    } 
相關問題