Aynı türden iki veya daha fazla ek açıklamayı tek bir öğeye, bu durumda bir yönteme tokatlamaya çalışıyorum. İşte üzerinde çalıştığım yaklaşık kod:
public class Dupe {
public @interface Foo {
String bar();
}
@Foo(bar="one")
@Foo(bar="two")
public void haha() {}
}
Yukarıdakileri derlerken javac, yinelenen bir ek açıklamadan şikayet eder:
max @ upight: ~ / work / daybreak $ javac Dupe.java Dupe.java:5: yinelenen ek açıklama
Bunun gibi ek açıklamaları tekrarlamak mümkün değil mi? Ufak tefek konuşmak gerekirse, içeriklerinin farklı olması nedeniyle yukarıdaki iki @Foo örneği farklı değil mi?
Yukarıdakiler mümkün değilse, bazı olası geçici çözümler nelerdir?
GÜNCELLEME: Kullanım durumumu açıklamam istendi. İşte başlıyor.
MongoDB gibi mağazaları belgelemek için POJO'ları "eşlemek" için şeker gibi bir sözdizimi mekanizması oluşturuyorum. Alıcılarda veya ayarlayıcılarda ek açıklamalar olarak dizinlerin belirtilmesine izin vermek istiyorum. İşte uydurma bir örnek:
public class Employee {
private List<Project> projects;
@Index(expr = "project.client_id")
@Index(expr = "project.start_date")
public List<Project> getProjects() { return projects; }
}
Açıkçası, Projenin çeşitli özelliklerine göre Çalışan örneklerini hızlı bir şekilde bulabilmek istiyorum. Ya @Index'i farklı ifade () değerleriyle iki kez belirtebilirim veya kabul edilen yanıtta belirtilen yaklaşımı kullanabilirim. Hibernate bunu yapıyor ve bir hack olarak görülmese de, en azından tek bir öğede aynı türden birden fazla ek açıklamaya izin vermenin yine de mantıklı olduğunu düşünüyorum.