Czy istnieje sposób automatycznego generowania programów pobierających i ustawiających w środowisku Eclipse?

256

Pracuję nad nowym Androidprojektem ( Java) i stworzyłem Obiekt z dużą liczbą zmiennych. Ponieważ planuję dodać moduły pobierające i ustawiające dla wszystkich z nich, zastanawiałem się: czy istnieje skrót Eclipsedo automatycznego generowania modułów pobierających i ustawiających w danej klasie?

Phil
źródło
1
Dla mnie to wygląda na prześladowcę ... Właśnie programowałem w Javie bez IDE, więc używanie Eclipse jest dla mnie stosunkowo nowe.
Phil
3
@krio - Cały świat nie używa Eclipse dla deweloperów Java. Większość pracy wykonałem w IntelliJ i kiedy zacząłem pracować w Eclipse, zadałem sobie wiele takich pytań.
vcsjones
1
@Phil, vcsjones - bardzo prawdziwe przepraszam, ale sprawdź to, - google.com.au/… - Myślę, że stackoverflow mówi, że badania są ważne
TeaCupApp
2
to najszybszy sposób: ctrl + 3
ggas
1
@Konstantin, który mówi, aby unikać używania ich w tej samej klasie, więc nie dzwoń this.getCount(), gdy możesz po prostu odwołać się this.mCount. Chociaż może to być bardziej kosztowna operacja, jest to czystsze podejście, aby zapewnić dostęp do zmiennych innych obiektów za pośrednictwem metod pobierających i ustawiających.
Phil

Odpowiedzi:

357

Wyświetl menu kontekstowe (tj. Kliknij prawym przyciskiem myszy) w oknie kodu źródłowego żądanej klasy. Następnie wybierz Sourcepodmenu; wybranie z tego menu Generate Getters and Setters...spowoduje wyświetlenie okna kreatora.

Source -> Generate Getters and Setters...

Wybierz zmienne, dla których chcesz utworzyć gettery i settery, i kliknij OK.

Hagai Cibulski
źródło
Jest tylko „Generuj komentarz elementu”, nie ma pobierających i ustawiających. Używam Eclipse 4.4.0, zainstalowana wtyczka PDT. Tymczasem można to wykorzystać - mikeangstadt.name/projects/getter-setter-gen .
Xdg,
Działa świetnie w wersji Eclipse Mars.2 Release (4.5.2). Dzięki.
this.user3272243
Dziękuję za uratowanie mi około miliona lat nudy!
Jay Edwards,
11
Możesz również uzyskać dostęp do tego podmenu za pomocą skrótu klawiaturowego SHIFT+ ALT+ S, a następnie otwórz opcje Generuj Gettery i Setters naciskając R.
Rosa
Zabawne, że moja odpowiedź stała się tak popularna, ale w dzisiejszych czasach używałbym Lombok , jak zauważyli inni poniżej.
Hagai Cibulski
70

W Eclipse Juno domyślnie ALT + SHIFT + S, R otwiera okno dialogowe getter / setter. Uwaga: musisz nacisnąć wszystkie 4 klawisze.

RoboAlex
źródło
5
Możesz pominąć część SHIFT i po prostu zrobić ALT + S, R.
Jason Wheeler
2
W SHIFTEclipse Kepler nie można pominąć
yellavon
Możesz pominąć SHIFTw Eclipse Oxygen.
Jake Reece
W SHIFTEclipse 2018-12 nie można pominąć.
Neph
69

Right click -> Source -> Generate setters and getters

Ale aby było jeszcze wygodniej, zawsze mapuję to na ALT + SHIFT+ GodWindows -> Preferences -> General -> Keys

Bozho
źródło
2
Naprawdę użyteczne! Używam tego samego mapowania klawiszy.
Ángel Carlos del Pozo Muela
41

Wszystkie pozostałe odpowiedzi skupiają się tylko na poziomie IDE, nie są to najbardziej efektywny i elegancki sposób generowania getterów i setterów. Jeśli masz dziesiątki atrybutów, odpowiednie metody pobierające i ustawiające sprawią, że Twój kod klasy będzie bardzo szczegółowy.

Najlepszym sposobem, w jaki kiedykolwiek automatycznie generowałem programy pobierające i ustawiające, jest stosowanie adnotacji projektu lombok w projekcie Java , lombok.jar wygeneruje metodę getter i setter podczas kompilowania kodu Java.

Skupiasz się na nazywaniu i definiowaniu atrybutów / zmiennych klas, lombok zajmie się resztą. Łatwo jest utrzymać kod.

Na przykład, jeśli chcesz dodać metodę getter i setter dla agezmiennej, po prostu dodaj dwie adnotacje lombok:

@Getter @Setter 
public int age = 10;

Odpowiada to takiemu kodowi:

private int age = 10;
public int getAge() {
    return age;
}
public void setAge(int age) {
    this.age = age;
}

Więcej informacji na temat lomboka można znaleźć tutaj: Projekt Lombok

dongpf
źródło
1
Otóż ​​to! Dziękuję Ci bardzo! W rzeczywistości twoja odpowiedź powinna być na górze, ponieważ lombok jest jedynym prawdziwym rozwiązaniem, aby uniknąć oglądania całego kodu Java, który trzeba wygenerować lub napisać. Dzięki!
Stefan Endrullis,
2
Projekt Lombok (a przynajmniej pomysł) powinien być częścią Java 11. Korzystam z Kotlina dla klas Pojo tylko po to, by uciec przed generacją setera
getterów
31

Sposoby generowania Getters & Setters -

1) Naciśnij Alt+ Shift+ S, a następnieR
2) Kliknij prawym przyciskiem myszy -> Źródło -> Generuj Gettery i Setters
3) Przejdź do menu Source -> Generuj Getters & Setters
4) Przejdź do menu Windows -> Preferencje -> Ogólne -> Klawisze (Napisz Generuj Getters & Setters w polu tekstowym)
5) Kliknij żarówkę błędu pola -> utwórz gettery i settery ...
6) Naciśnij Ctrl+3 i wpisz gettery i settery w polu tekstowym, a następnie wybierz opcję Generuj Getters & Setters

jeśli Mac OS naciśnij Alt + cmd + S, a następnie wybierz Getters & Setters

Deepak Gupta
źródło
2
Myślę, że 1 jest to trochę łatwiejsze w ten sposób: 1) Naciśnij Alt + Shift + S, a następnie R
Paco Abato
1
Naciśnięcie Ctrl-3, a następnie bezpośrednio wpisanie „getter” na liście nie istnieje. O wiele łatwiejsze do zapamiętania niż określone skróty, ponieważ działa to dla każdego polecenia, widoku i tak dalej.
Bananeweizen
@ Bananeweizen - Dzięki
Deepak Gupta
11

Kliknięcie prawym przyciskiem myszy -> generowanie getterów i settererów działa dobrze, ale jeśli chcesz utworzyć skrót klawiaturowy w Eclipse w Windows, możesz wykonać następujące kroki:

  1. Przejdź do Okno> Preferencje
  2. Przejdź do Ogólne> Klucze
  3. Lista dla „Quick Assist - Create getter / setter for field”
  4. W polu tekstowym „Wiązanie” poniżej przytrzymaj żądane klawisze (w moim przypadku używam ALT + SHIFT + G)
  5. Kliknij Zastosuj i OK
  6. Teraz w edytorze Java wybierz pole, dla którego chcesz utworzyć metody pobierające / ustawiające, i naciśnij skrót skonfigurowany w kroku 4. Naciśnij OK w tym oknie, aby utworzyć metody.

Mam nadzieję że to pomoże!

sufinawaz
źródło
9

Pewnie.

Użyj opcji Generuj pobrane i ustawiające z menu Źródło lub menu kontekstowego na wybranym polu lub typie lub zaznaczenia tekstu w typie, aby otworzyć okno dialogowe. Okno dialogowe Generuj gettery i setery pokazuje gettery i setery dla wszystkich pól wybranego typu. Metody są pogrupowane według pól typu.

Spójrz w dokumentacji pomocy aby uzyskać więcej informacji.

vcsjones
źródło
8

Tak. Kliknij kod prawym przyciskiem myszy i zobaczysz wyskakujące menu; tam „Źródło”, „Generuj gettery i setery”, a obok niego możesz zobaczyć skrót, którym jest Alt + Shift + S i R w moim systemie.

Podobnie możesz przejść do innych podmenu w tym menu głównym, wpisując odpowiedni skrót, idziesz prosto do podmenu zamiast głównego menu kontekstowego, a następnie możesz albo wybrać z menu, albo wpisać inną literę, aby wybrać z listy.

Zds
źródło
8

Na Mac OS to Alt+Cmd+Snastępnie wybierz „... pobierające i ustawiające metody”

Alexander Volkov
źródło
7

Wolę najpierw utworzyć pole prywatne

private String field;

Zaćmienie automatycznie podświetli zmienną, ustawiając kursor nad nową zmienną, naciśnij Ctrl + 1. Następnie wyświetli menu Utwórz getter i setter.

Naciskam Ctrl + 1, ponieważ jest to nieco bardziej inteligentne w kwestii tego, co według mnie chcesz dalej.

David Chiew
źródło
5

Naciśnij klawisze Alt + Shift + S + R ..., a następnie wybierz tylko wszystkie pola, które chcesz wygenerować Getters lub Setters lub oba

Sagar Sawant
źródło
5
  • Dla Wszystkie zmienne ALT + SHIFT + S Następnie R i aby wybrać wszystkie Naciśnij ALT + A

  • W przypadku pojedynczej zmiennej Wskaż kursorem zmienną, a następnie naciśnij CTRL + 1 i przejdź do drugiej opcji z sugestii

Zrzut ekranu

Rohit Mewada
źródło
Dziękuję, tego właśnie szukałem.
Shams Nahid
4

Dostępny jest słój o otwartym kodzie źródłowym, znany jako Lombok , wystarczy dodać słój, a następnie opatrzyć adnotacje swoje POJO za pomocą @Getter & @Setter, aby automatycznie utworzyć gettery i settery.

Oprócz tego możemy korzystać z innych funkcji, takich jak @ToString , @EqualsAndHashCode i całkiem innych fajnych rzeczy, które usuwają kod waniliowy z twojej aplikacji

rajadilipkolli
źródło
3

Zaćmienie> Źródło> Generuj gettery i setery

użytkownik2332195
źródło
3

** W Eclipse Ide

do generowania zarówno setterów, jak i getterów -> alt + shift + s + r, następnie Alt A, a następnie kliknij OK;

do generowania tylko getterów -> alt + shift + s + r, następnie naciśnij g, a następnie kliknij przycisk OK;

do generowania tylko ustawiaczy -> alt + shift + s + r, następnie naciśnij l, a następnie kliknij przycisk OK; **

Abhinav
źródło
2

Kliknij prawym przyciskiem myszy właściwość, dla której chcesz wygenerować getter i setters, i wybierz

Source -> Generate Getters and Setters...
Eduardo Dennis
źródło
2

1) Przejdź do Windows-> Preferencje-> Ogólne-> Klucze

2) Wybierz commandGeneruj pobierające i ustawiające

3) W Binding, tego skrótu się jak do stosowania (jak Alt + G )

4) Kliknij Zastosuj i jesteś gotowy

Prateek Joshi
źródło
1
  1. Otwórz plik klasy w Eclipse
  2. Kliknij dwukrotnie nazwę klasy lub zaznacz ją
  3. Następnie przejdź do Źródło -> Wstaw kod
  4. Kliknij Getter and Setter

Otwiera okno podręczne, aby wybrać pola, dla których mają zostać wygenerowane metody ustawiające / ustawiające. Wybierz pola i kliknij przycisk „Generuj”. wprowadź opis zdjęcia tutajwprowadź opis zdjęcia tutaj

Vallabha Vamaravelli
źródło
1

Użyj Project Lombok lub lepiej Kotlin dla swojego Pojos.

(Również, aby dodać Kotlin do swojego CV;))

To:

public class BaseVO {
    protected Long id;

    @Override
    public boolean equals(Object obj) {
        if (obj == null || id == null)
            return false;

        if (obj instanceof BaseVO)
            return ((BaseVO) obj).getId().equals(id);

        return false; 
    }

    @Override
    public int hashCode() {
        return id == null ? null : id.hashCode();
    }
    // getter setter here
}

public class Subclass extends BaseVO {
    protected String name;
    protected String category;
    // getter setter here
}

stałby się tak:

open class BaseVO(var id: Long? = null) {

    override fun hashCode(): Int {
        if (id != null)
            return id.hashCode()

        return super.hashCode()
    }

    override fun equals(other: Any?): Boolean {
        if (id == null || other == null || other !is BaseVO)
            return false

        return id.hashCode() == other.id?.hashCode()
    }
}

@Suppress("unused")
class Subclass(
        var name: String? = null,
        var category: String? = null
) : BaseVO()

Lub użyj klas „danych” Kotlina. W rezultacie piszesz jeszcze mniej wierszy kodu.

Wolf359
źródło