2012-10-17 11 views
6

Qual è il metodo consigliato per impostare il titolo con setTitle("Title") o super("Title") mentre si estende javax.swing.JFrame in termini di prestazioni?Chiamando il costruttore di superclasse con super o semplicemente setTitle?

+1

Non estendere 'JFrame', basta usare un'istanza. Ma in entrambi i casi, si può anche passare il titolo nel costruttore per il fatto che sono meno linee di codice per creare/configurare un'istanza. Vedi anche [Quando ottimizzare] (http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize). –

+5

* prestazioni *? Quanti JFrames vuoi creare? Milioni di secondi? –

risposta

4

Se grepcode JFrame (in OpenJDK 6-B14), e scavare un po ', si vede che il costruttore JFrame() chiama il costruttore Frame(), che chiama Frame("") (link).

Quindi, poiché è stato aggiunto un numero implicito super() se non si specifica una chiamata a un super costruttore, sarebbe (anche se leggermente troppo) più efficace chiamare super("Title").

0

È buona norma chiamare sempre il super corrispondente (.....) quando si estende una classe. Come non sai mai quale magia fa il super costruttore dietro la scena.

Non è mai necessario solo

chiamata super();

Questo è ciò che sarà lì se non si specifica qualcos'altro. Hai solo bisogno di specificare il costruttore per chiamare se:

  • Si desidera chiamare un costruttore della superclasse che ha parametri
  • Volete catena ad un altro costruttore della stessa classe al posto del costruttore della superclasse
+0

Intendi chiamare esplicitamente 'super' quando estendi una classe? Se è così, perché? Perché quando estendi una classe in modo esplicito o implicito, chiami 'super'? – emory

+0

Ho modificato la mia risposta per andare un po 'più a fondo – Frank

1

Se siete nel vostro costruttore, provate a delegare quante più funzionalità possibili al super costruttore. È possibile che tu possa salvarlo dal fare un po 'di lavoro.

Ad esempio, il super costruttore di default potrebbe creare alcuni oggetti interni che verranno semplicemente sovrascritti quando si chiama il setter. Se si passano immediatamente i dati corretti, gli si dà l'opportunità di essere più efficienti.

Ma penso che in questo caso specifico, non importa molto.

Problemi correlati