[英]Java - use of super() in the given example
我剛剛開始學習Spring框架,並在javatpoint.com上找到了一些教程。
我有以下代碼(沒什么特別的,只顯示一些問題和答案):
private int id;
private String name;
private Map<Answer,User> answers;
public Question(){}
public Question(int id, String name, Map<Answer,User> answers){
super();
this.id = id;
this.name = name;
this.answers = answers;
}
我的問題是:他為什么要使用那個空的構造函數和關鍵字super() ? 該應用程序在沒有它們的情況下可以運行,而在此代碼中我無法理解它們的優點。
PS:沒有超級類或類似的東西。
在某些情況下,無參數構造函數(例如, Question()
)可能很有用-如果您將類用作Bean並希望延遲初始化其成員,通過GWT對其進行序列化等,則無需提供任何上下文。例如,這確實是多余的。
對super()
的調用是完全多余的,並且如果未指定對super
[other]調用,則將隱式執行。
在大多數情況下,僅當您在諸如Hibernate或JPA之類的較差的框架中使用類時,才需要空的構造函數,而在該框架中,框架需要空的構造函數來創建您的類。 然后,空構造函數用於框架,非空構造函數通常用於測試或其他用途。
在上面的示例中,我沒有看到任何證據表明您使用了這種框架,因此不需要此空的構造函數。
至於super()
則根本不需要。
每個未顯式擴展另一個類的類都隱式擴展java.lang.Object。 因此,super()只需調用Object的no-arg構造函數。
顯式調用是不必要的,因為編譯器會為您添加它。 當您要使用參數調用超類構造函數時,只需要在構造函數中添加super()調用即可。
因此,無論是否添加super()構造函數,結果都是相同的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.