2010-08-14 26 views
11

Mam klasy A i BM rozszerza A. Teraz chcę utworzyć konstruktora B za pomocą opcji generowania kodu zaćmienia, który akceptuje parametry i ustawić wartości wszystkich pól B (mam na myśli to powinno również ustawić pola dziedziczone z A).jak generować konstruktorów w eclipse

Czy istnieje skrót do generowania takiego kodu w czasie zaćmienia?

Odpowiedz

6

Eclipse (3.5) nie ma wbudowanego w opcji dla tego konkretnego przypadku, ale i tak chciałbym sugerować, że masz oddzielny konstruktora w super klasy, których podklasa wywołuje poprzez super(...) w jego konstruktora.

To byłoby łatwiejsze w utrzymaniu. Jeśli na przykład dodasz plik w super klasie, musisz również pamiętać o aktualizacji podklasy.

class A { 
    int i; 
    public A(int i) { this.i = i; } 
} 

class B extends A { 
    int j; 
    public B(int i, int j) { 
     super(i); 
     this.j = j; 
    } 
} 
21

Kliknij prawym przyciskiem myszy w edytorze i kliknij "Źródło -> Generuj Konstruktor przy użyciu pól". Możesz wybrać super konstruktor do użycia, a także wybrać zmienne instancji do dodania do konstruktora.

+1

Nie spowoduje to jednak inicjalizacji dla publicznych/chronionych członków superklasy, co według mnie jest PO. – aioobe

+0

@aioobe - zgadza się, to był główny temat pytania akshays. –

2

Nie ma automatycznego sposobu, aby to zrobić i jestem bliski przekonania, że ​​zespół zaćmienia zrobił to celowo, ponieważ prowadziłoby to do złego projektu.

Skonstruowanie klasy polega na zainicjowaniu obiektów własnych tylko. Jeśli musisz ustawić (init) pola nadklasy, wywołaj konstruktor superklasy, jeśli chcesz zmienić pola nadklasy, wywołaj metody pobierające i ustawiające superklasy.

Dla mnie to zły projekt do inicjowania pól nadklasy i można go łatwo uniknąć.