2017-03-01 35 views
5

Lombok, kurucuyu otomatik oluştururken alanın açıklamasını kaçırır. Kurucu giriş paramlarında alanın ek açıklamalarını tutmanın bir yolu var mı?Lombok - kurucu giriş paramlarında alanın ek açıklamalarını koru

Sınıf yapıcısı üretmek için,

@RequiredArgsConstructor(onConstructor = @__(@Inject)) 
public class Test { 

    @Named("MyField") 
    private final String field; 
    @Named("MyHandler") 
    private final SomeHandler handler; 
} 

Oluşturulan sınıfı:

public class Test { 

    @Named("MyField") 
    private final String field; 
    @Named("MyField") 
    private final SomeHandler handler; 

    @Inject 
    public Test(final String field, final SomeHandler handler) { 
     this.field = field; 
     this.handler = handler; 
    } 
} 

İstenilen sınıfı:

public class Test { 

    @Named("MyField") 
    private final String field; 
    @Named("MyHandler") 
    private final SomeHandler handler; 

    @Inject 
    public Test(@Named("MyField")final String field, 
       @Named("MyHandler")final SomeHandler handler) { 
     this.field = field; 
     this.handler = handler; 
    } 

} 
+0

Bunun hiç bir zaman aşağıdaki gibi uygulanmadığını düşünmüyorum: https://groups.google.com/forum/#!topic/project-lombok/2vaujDkV8Nw – Cheetah

+0

@Cheetah Korkarım haklısınız. Yıllar önce uygulamaya başladım, ama düşündüğümden daha karmaşıktı. Kimse umursamadı ve kendime nadiren ihtiyaç duyduğumu ve bir çözüm olduğunu öğrendim. – maaartinus

cevap

0

Sadece buna olurdu eğer yapıcı kendisini yazı daha ayrıntılı olur Lombok tarafından uygulanmaktadır. Yapıcıyı elle tanımlayın veya mümkünse alanları ek açıklamalara ekleyin.

+1

Katılmıyorum. Alanı açıklamak kadar basit olabilir (tek başına yapıcı enjeksiyonu için hiçbir şey yapmaz) ve lombok'un oluşturduğu kurucunun argüman listesine gitmesine izin verir. – maaartinus

4

Böyle bir özellik yok ve hiç kimsenin umurunda değil gibi görünüyor. I proposed it once ve onu uygulamaya başladı, ancak pes etti (hiçbir talep ve çok fazla iş).

Belki

@RequiredArgsConstructor([email protected]__(@Inject)) 
public class Something { 
    @OnConstructor(@Named("userName")) 
    private final String userName; 

    @OnConstructor(@Named("userPassword")) 
    private final String userPassword; 

    private final int anotherField; 

    private final int yetAnotherField; 
} 

ya da sadece

@RequiredArgsConstructor(
    [email protected]__(@Inject), 
    [email protected]__(@Named)) 
public class Something { 
    @Named("userName") 
    private final String userName; 

    @Named("userPassword") 
    private final String userPassword; 

    private final int anotherField; 

    private final int yetAnotherField; 
} 

gibi görünebilir ya da muhtemelen tüm @Named ek açıklamaları yapıcı taşınacak istiyorum gibi lombok.config kullanılarak kontrol edilebilir.

Korkarım ki, eğer istersen, o zaman bunu kendin yapmalısın (eksik uygulamam size biraz yardımcı olabilir).

FTR: Şu anda feature request var.