2012-10-17 98 views
6

建議使用setTitle("Title")super("Title")設置標題的方法是什麼,同時在性能方面擴展javax.swing.JFrame調用超類或只是setTitle的超類構造函數?

+1

不要擴展'JFrame',只需使用一個實例。但無論哪種方式,您都可以在構造函數中傳遞標題,以減少代碼行來創建/配置實例。另請參閱[何時優化](http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize)。 –

+5

*表現*?你想創建多少個JFrames?幾百萬秒? –

回答

4

如果grepcode JFrame(在OpenJDK的6-B14),並挖了一下,你看到JFrame()調用構造Frame()構造函數,調用Frame("")link)。

因此,如果您沒有自己指定對任何超級構造函數的調用,則會添加一個隱含的super(),因此調用super("Title")會更加有效(雖然略微如此)。

0

在擴展課程時總是調用相應的超級(.....)是一個好習慣。因爲你永遠不知道超級構造函數在場景後面做了什麼魔術。

你永遠不需要只是

call super();

這就是如果你不指定任何其他東西將會在那裏。你只需要指定構造函數,如果調用:

  • 你要調用父類的構造函數具有參數
  • 你想鏈到另一個構造在同一類而不是父類的構造
+0

你的意思是當你擴展一個類時顯式調用'super'?如果是這樣,爲什因爲當你明確或隱含地擴展一個類時,你會調用'super'? – emory

+0

我編輯了我的答案,進一步深入 – Frank

1

如果你在你的構造函數中,嘗試儘可能地將更多的功能委託給超級構造函數。有可能你可以把它從做一些工作中解救出來。例如,默認的超級構造函數可能會創建一些內部對象,當您調用setter時,它們會被覆蓋。如果您立即傳遞正​​確的數據,您就有機會提高效率。

但我認爲在這個特定的情況下,它並不重要。

相關問題