ฉันพยายามตบคำอธิบายประกอบประเภทเดียวกันสองรายการขึ้นไปในองค์ประกอบเดียวในกรณีนี้คือวิธีการ นี่คือรหัสโดยประมาณที่ฉันกำลังดำเนินการ:
public class Dupe {
public @interface Foo {
String bar();
}
@Foo(bar="one")
@Foo(bar="two")
public void haha() {}
}
เมื่อรวบรวมข้อมูลข้างต้น javac บ่นเกี่ยวกับคำอธิบายประกอบที่ซ้ำกัน:
max @ upsight: ~ / work / daybreak $ javac Dupe.java Dupe.java:5: คำอธิบายประกอบที่ซ้ำกัน
เป็นไปไม่ได้ที่จะทำซ้ำคำอธิบายประกอบเช่นนี้? พูดอย่างอวดดีสองอินสแตนซ์ของ @Foo ข้างต้นไม่แตกต่างกันเนื่องจากเนื้อหาต่างกันใช่หรือไม่?
หากไม่สามารถทำได้ข้างต้นมีวิธีแก้ไขปัญหาอะไรบ้าง
UPDATE: ฉันถูกขอให้อธิบายกรณีการใช้งานของฉัน นี่ไป
ฉันกำลังสร้างกลไกเชิงไวยากรณ์เพื่อ "แมป" POJO ไปยังที่เก็บเอกสารเช่น MongoDB ฉันต้องการอนุญาตให้ระบุดัชนีเป็นคำอธิบายประกอบบน getters หรือ setters นี่คือตัวอย่างที่สร้างขึ้น:
public class Employee {
private List<Project> projects;
@Index(expr = "project.client_id")
@Index(expr = "project.start_date")
public List<Project> getProjects() { return projects; }
}
เห็นได้ชัดว่าฉันต้องการค้นหาอินสแตนซ์ของพนักงานได้อย่างรวดเร็วจากคุณสมบัติต่างๆของ Project ฉันสามารถระบุ @Index สองครั้งด้วยค่า expr () ที่แตกต่างกันหรือใช้วิธีการที่ระบุในคำตอบที่ยอมรับ แม้ว่าไฮเบอร์เนตจะทำเช่นนี้และไม่ถือว่าเป็นการแฮ็ก แต่ฉันคิดว่าอย่างน้อยก็ยังเหมาะสมที่จะอนุญาตให้มีคำอธิบายประกอบประเภทเดียวกันหลายรายการในองค์ประกอบเดียว