2012-10-17 10 views
6

Jaka jest zalecana metoda ustawiania tytułu za pomocą setTitle("Title") lub super("Title") podczas rozszerzania zakresu javax.swing.JFrame pod względem wydajności?Wywołanie konstruktora nadklasy za pomocą polecenia super lub just setTitle?

+1

Nie należy rozszerzać 'JFrame', wystarczy użyć instancji. Ale tak czy inaczej, równie dobrze możesz przekazać tytuł w konstruktorze, ponieważ mniej linii kodu tworzy/konfiguruje instancję. Zobacz także [Kiedy optymalizować] (http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize). –

+5

* wydajność *? Ile JFrames chcesz utworzyć? Miliony na sekundę? –

Odpowiedz

4

Jeśli grepcode JFrame (w OpenJDK 6-B14) i kopać trochę widać, że konstruktor JFrame() wywołuje konstruktor Frame(), który nazywa Frame("") (link).

Tak więc, ponieważ niejawny super() został dodany, jeśli nie określisz osobiście żadnego super-konstruktora, będzie on (choć bardzo nieznacznie) bardziej skuteczny w wywołaniu super("Title").

0

Dobrą praktyką jest zawsze wywoływanie odpowiedniego super (.....) podczas rozszerzania klasy. Jak nigdy nie wiesz, jaka magia super konstruktor działa za sceną.

Nigdy nie potrzebujesz tylko

zadzwoń super();

Tak będzie, jeśli nie określisz niczego innego. Wystarczy tylko określić konstruktor zadzwonić, jeżeli:

  • Chcecie wywołać konstruktor nadklasy który parametrami
  • Chcesz łańcucha do innego konstruktora w tej samej klasie, a nie konstruktor nadklasy
+0

Czy chcesz jawnie wywoływać słowo "super" podczas rozszerzania klasy? Jeśli tak, dlaczego? Bo kiedy rozszerzasz klasę jawnie lub niejawnie, nazywasz 'super'? – emory

+0

Edytowałem swoją odpowiedź, aby przejść nieco głębiej – Frank

1

Jeśli jesteś w swoim konstruktorze, spróbuj przekazać jak najwięcej funkcjonalności do super konstruktora. Możliwe, że możesz go uratować przed wykonaniem jakiejś pracy.

Na przykład, domyślny super konstruktor może utworzyć niektóre obiekty wewnętrzne, które zostaną po prostu nadpisane, gdy wywołasz program ustawiający. Jeśli natychmiast przekażesz poprawne dane, dajesz mu szansę na zwiększenie wydajności.

Ale myślę, że w tym konkretnym przypadku nie ma to większego znaczenia.

Powiązane problemy