मैं एक ही तत्व पर एक ही प्रकार के दो या अधिक एनोटेशन को थप्पड़ मारने का प्रयास कर रहा हूं, इस मामले में, एक विधि। यहाँ अनुमानित कोड है जिसके साथ मैं काम कर रहा हूँ:
public class Dupe {
public @interface Foo {
String bar();
}
@Foo(bar="one")
@Foo(bar="two")
public void haha() {}
}
उपरोक्त संकलन करते समय, javac एक डुप्लिकेट एनोटेशन के बारे में शिकायत करता है:
max @ upsight: ~ / काम / दिन के बहाने $ javac Dupe.java डुपए.जावा और: डुप्लिकेट एनोटेशन
क्या इस तरह से एनोटेशन दोहराना संभव नहीं है? पांडित्यपूर्ण रूप से, उनकी सामग्री भिन्न होने के कारण @Foo के दो उदाहरण अलग-अलग नहीं हैं?
यदि उपरोक्त संभव नहीं है, तो कुछ संभावित वर्कअराउंड क्या हैं?
अद्यतन: मुझे अपने उपयोग के मामले का वर्णन करने के लिए कहा गया है। यहाँ जाता हैं।
मैं MongoDB जैसे दस्तावेज़ स्टोर के POJOs को "मैप" करने के लिए एक वाक्यविन्यास शर्करा तंत्र का निर्माण कर रहा हूं। मैं अनुक्रमणिका को गेटर्स या सेटर पर एनोटेशन के रूप में निर्दिष्ट करने की अनुमति देना चाहता हूं। यहाँ एक उदाहरण दिया गया है:
public class Employee {
private List<Project> projects;
@Index(expr = "project.client_id")
@Index(expr = "project.start_date")
public List<Project> getProjects() { return projects; }
}
जाहिर है, मैं परियोजना के विभिन्न गुणों द्वारा कर्मचारी के उदाहरणों को जल्दी से ढूंढना चाहता हूं। मैं या तो अलग-अलग expr () मानों के साथ @ दो बार निर्दिष्ट कर सकता हूं, या स्वीकृत उत्तर में निर्दिष्ट दृष्टिकोण ले सकता हूं। भले ही हाइबरनेट ऐसा करता है और इसे हैक नहीं माना जाता है, मुझे लगता है कि यह अभी भी कम से कम एक ही तत्व पर एक ही प्रकार के कई एनोटेशन होने की अनुमति देता है।