Pominięcie jednego Settera / Gettera w Lombok


232

Chcę użyć klasy danych w Lombok. Ponieważ ma około tuzina pól, opatrzyłem go adnotacjami @Data, aby wygenerować wszystkie setery i getter. Jest jednak jedno specjalne pole, dla którego nie chcę, aby wdrażacze były wdrażane.

Jak Lombok pomija to pole?

Odpowiedzi:


415

Możesz przekazać poziom dostępu do @Getteri @Setteradnotacji. Jest to przydatne, aby osoby pobierające lub ustawiające były chronione lub prywatne. Można go również użyć do zastąpienia wartości domyślnej.

Dzięki @Datadomyślnie masz publiczny dostęp do akcesoriów. Możesz teraz użyć specjalnego poziomu dostępu, NONEaby całkowicie pominąć akcesorium, w następujący sposób:

@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
private int mySecret;

1
Idealny. Jeśli pole prywatne to POJO, a także opatrzone adnotacją @Delegate (), można go użyć do wyodrębnienia zestawu właściwości do oddzielnej klasy wielokrotnego użytku. Może to być przydatne do zastosowania tego samego zestawu właściwości do wielu klas (rodzaj mieszanki do dodawania właściwości). Na przykład mixin reprezentujący zestaw atrybutów, które mogą mieć zastosowanie do modelowania różnych elementów XML.
xorcus

Czy masz coś podobnego do pominięcia jednego pola w programie budującym?
zt1983811

1
Masz na myśli, że atrybut nie powinien pojawiać się w kreatorze? Nie, nie ma na to nic bezpośredniego. Pamiętaj jednak, że @Buildermożna to umieścić zarówno na funkcjach i konstruktorach, jak i klasach, i oferuje jedynie ustawienie tych atrybutów, które pojawiają się w sygnaturze tej funkcji.
Michael Piefel

Nie implementuje on settera i gettera dla tej właściwości, gdzie @Data domyślnie zawiera setter i gettery. które można by wykluczyć, wspominając AccessLevel.NONE.
Ram

41

Zgodnie z opisem @Data możesz użyć:

Wszystkie generowane pobierające i ustawiające będą publiczne. Aby przesłonić poziom dostępu, oznacz pole lub klasę za pomocą wyraźnej adnotacji @Setter i / lub @Getter. Możesz także użyć tej adnotacji (łącząc ją z AccessLevel.NONE), aby całkowicie pominąć generowanie gettera i / lub setera.


-3

Jeśli masz ustawiającego i pobierającego jako prywatny, pojawi się w czekach PMD.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.