Saya mencoba menampar dua atau lebih penjelasan dari jenis yang sama pada satu elemen, dalam hal ini, metode. Berikut perkiraan kode yang saya kerjakan:
public class Dupe {
public @interface Foo {
String bar();
}
@Foo(bar="one")
@Foo(bar="two")
public void haha() {}
}
Saat menyusun penjelasan di atas, javac mengeluh tentang anotasi duplikat:
max @ upsight: ~ / work / daybreak $ javac Dupe.java Dupe.java:5: anotasi duplikat
Apakah tidak mungkin mengulangi penjelasan seperti ini? Ngomong-ngomong, bukankah kedua contoh @Foo di atas berbeda karena isinya berbeda?
Jika hal di atas tidak memungkinkan, apa sajakah solusi potensial?
UPDATE: Saya telah diminta untuk menjelaskan kasus penggunaan saya. Ini dia.
Saya sedang membangun mekanisme sintaksis untuk "memetakan" POJO ke penyimpanan dokumen seperti MongoDB. Saya ingin mengizinkan indeks ditetapkan sebagai anotasi pada pengambil atau penyetel. Inilah contoh yang dibuat-buat:
public class Employee {
private List<Project> projects;
@Index(expr = "project.client_id")
@Index(expr = "project.start_date")
public List<Project> getProjects() { return projects; }
}
Jelas, saya ingin dapat dengan cepat menemukan contoh Karyawan berdasarkan berbagai properti Project. Saya dapat menentukan @Index dua kali dengan nilai expr () yang berbeda, atau mengambil pendekatan yang ditentukan dalam jawaban yang diterima. Meskipun Hibernate melakukan ini dan itu tidak dianggap sebagai peretasan, saya pikir masih masuk akal untuk setidaknya mengizinkan memiliki beberapa anotasi dengan jenis yang sama pada satu elemen.