2014-07-10 42 views
10

varsayılan olarak bir null ek açıklama belirtmek mümkün mü? Ben başarmak istiyorum neEk Açıklama varsayılan "boş" değeri

opsiyonel ek açıklama nitelikleri gibi bir şeydir. Örneğin

public @interface Foo { 

    Config value(); 

} 


public @interface Config { 

    boolean ignoreUnknown() default false; 
    int steps() default 2; 
} 

Ben @Foo kullanmak istiyorum (değer belirtmeden, bu nedenle isteğe bağlı bir çeşit olmalı) ve ben de böyle bir şey yazabilmek istiyorum:

@Foo (
    @Config(
     ignoreUnknown = true, 
     steps = 10 
    ) 
) 

Ek açıklamalarla böyle bir şey yapmak mümkün mü?

Bu kamu @interface Foo {böyle bir şey yapmak istemiyorum

boolean ignoreUnknown() default false; 
    int steps() default 2; 
} 

Ben bir özellik ayarlamak veya olmasın (ve sahip olduğu takdirde edilmişse ayırt edebilmek istiyorum çünkü varsayılan değer veya değil).

Tarif etmesi karmaşık biraz, ama Java kod üreten küçük Ek Açıklama İşlemci üzerinde çalışıyorum. Ancak çalışma zamanında @Config ile kendi yapılandırmasını ayarlamış olanlar hariç, tüm @Foo için kullanılması gereken bir varsayılan yapılandırma kurmak istiyorum.

ne yani istediğim böyle bir şeydir:

public @interface Foo { 

     Config value() default null; 

} 

Ama bildiğim kadarıyla doğru, onun mümkün değildir bildiği gibi? Böyle bir isteğe bağlı özellik için herhangi bir çözüm bilen var mı?

+0

Olası yinelenen http://stackoverflow.com/questions/1178104/error-setting-a-default- boş-değer-bir-ek açıklamalar alan) hep '@Foo (yazmak zorunda daha {})' ve kullanım% 90'ında başka Yapılandırma sağlamak istiyoruz, bu yüzden yok – fracz

cevap

16

Hayır, bir ek açıklama özellik değeri için null kullanamazsınız. Bununla birlikte, bir dizi tipi kullanabilir ve boş bir dizi sağlayabilirsiniz.

public @interface Foo { 
    Config[] value(); 
} 
... 
@Foo(value = {}) 

veya

public @interface Foo { 
    Config[] value() default {}; 
} 
... 
@Foo 
([bir ek açıklamanın alan için varsayılan boş değeri ayarlayarak Hata] arasında
+0

Evet, ama değeri = isterim sahip olmak ister sadece 'Bu bir' varsayılan {} 'ayarı kadar kolay @sockeqwe Foo' – sockeqwe

+1

@. –

+0

ah, sağ ... Harika! Teşekkür ederim! Cevabınızı 5 dakika içinde kabul ediyorum (Stackoverflow cevabı kabul edene kadar 5 dakika beklemem gerektiğini söylüyor) – sockeqwe

İlgili konular