ब्लेज़ सीबीएवी (बाधा आधारित एनोटेशन सत्यापन) अभी भी विकास में है लेकिन कुछ फैंसी संकलन समय सत्यापन के लिए पहले से ही सक्षम है। असल में आप अपनी शर्तों के आधार पर कंपाइलर त्रुटियों को उत्पन्न करने के लिए अपनी एनोटेशन पर मेटा जानकारी जोड़ने के लिए उस लाइब्रेरी का उपयोग कर सकते हैं।
कुछ उपयोगी डिफ़ॉल्ट बाधाएं पूर्वनिर्धारित हैं, लेकिन आप एक वैधकर्ता को लागू करके स्वयं को परिभाषित कर सकते हैं और अपनी बाधा पर एक बाधा एनोटेशन के माध्यम से बाध्य कर सकते हैं। जब आप अपनी बाधा का उपयोग करना चाहते हैं तो सत्यापनकर्ताओं के कार्यान्वयन को आपके भीतर कक्षाबद्ध रूप में संकलित रूप में मौजूद होना चाहिए, ताकि आप इसे अलग-अलग पैकेज करना चाहें। इसे आजमाएँ और संभावनाओं का पता लगाने;)
उदाहरण के लिए, आप एक बार में एक वर्ग के भीतर लगता है कि एक एनोटेशन की दी गई मूल्य केवल तब होता है बना सकता है:
public @interface MyAnnotation{
@UniqueValueConstraint(scope=ConstraintScope.CLASS, errorMessage="This value must be unique within class level!")
String value();
}
public class MyClass{
@MyAnnotation("test")
void test1(){}
@MyAnnotation("test")
void test2(){} // Compiler error with your message ;)
}
आप Github पर परियोजना पा सकते हैं: https://github.com/Blazebit/blaze-cbav
स्रोत
2012-08-30 08:45:25