Lombok'ta bir Setter / Getter'ı atlamak


233

Lombok'ta bir veri sınıfı kullanmak istiyorum. Yaklaşık bir düzine alanı olduğundan, @Datatüm ayarlayıcıları ve alıcıları oluşturmak için ek açıklama ekledim. Ancak erişimcilerin uygulanmasını istemediğim özel bir alan var.

Lombok bu alanı nasıl atlıyor?

Yanıtlar:


416

@GetterVe @Setterek açıklamalarına bir erişim düzeyi iletebilirsiniz . Bu, alıcıları veya ayarlayıcıları korumalı veya özel yapmak için kullanışlıdır. Varsayılanı geçersiz kılmak için de kullanılabilir.

İle @Datavarsayılan olarak erişimcilere genel erişiminiz olur. Artık NONEerişimciyi tamamen atlamak için özel erişim seviyesini kullanabilirsiniz, örneğin:

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

1
Mükemmel. Özel alan bir POJO ise ve ayrıca @Delegate () ile açıklamalı ise, bir dizi özelliği yeniden kullanılabilir ayrı bir sınıfa çıkarmak için kullanılabilir. Bu, aynı sınıf kümesinin birden çok sınıfa uygulanması için yararlı olabilir (özellik eklemek için bir tür karışım). Örneğin, çeşitli XML öğelerinin modellemesine uygulanabilecek bir dizi özniteliği temsil eden bir mixin.
xorcus

Oluşturucudaki bir alanı atlamaya benzer bir şeyleriniz var mı?
zt1983811

1
Özelliğin oluşturucuda görünmemesi mi demek istediniz? Hayır, bunun için doğrudan bir şey yok. Bununla birlikte @Builder, sınıfların yanı sıra işlevlere ve yapıcılara da konabilir ve sadece bu işlevin imzasında ortaya çıkan nitelikleri ayarlamayı teklif edin.
Michael Piefel

@Data'nın varsayılan olarak ayarlayıcılar ve alıcılar içerdiği bu özellik için herhangi bir ayarlayıcı ve alıcı uygulamaz. söz ederek dışlanacaktı AccessLevel.NONE.
Ram

41

@Veri açıklamasına göre şunları kullanabilirsiniz:

Oluşturulan tüm alıcılar ve ayarlayıcılar herkese açık olacak. Erişim düzeyini geçersiz kılmak için, alana veya sınıfa açık bir @Setter ve / veya @Getter ek açıklama ekleyin. Bu ek açıklamayı, alıcı ve / veya ayarlayıcı oluşturmayı tamamen bastırmak için de (AccessLevel.NONE ile birleştirerek) kullanabilirsiniz.


0

Kullanıcıyı atlamak için aşağıdaki kodu kullanın / ayarlayıcı ve alıcı oluşturmayı hariç tutar .

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

Bahar önyükleme 2.3 sürümü, bu iyi çalışıyor.


Bu, kabul edilen cevaba hiçbir şey katmaz.
DerMike

@DerMike şimdi kontrol edin. Yazım hatası. İç katma değer
Shakthifuture

-3

Özel olarak ayarlayıcı ve alıcı varsa, PMD kontrollerinde görünecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.