मैंने अपनी खुद की एनोटेशन बनाई है, जिसे मैं अपने कोड में निर्णय लेने के लिए प्रतिबिंब के माध्यम से उपयोग करता हूं। एनोटेशन के एकमात्र तत्व के लिए एक डिफ़ॉल्ट मान सेट है। क्या कोई तरीका है कि मैं प्रतिबिंब के माध्यम से डिफ़ॉल्ट मान का उपयोग कर सकता हूं?जावा में एनोटेशन से डिफ़ॉल्ट तत्व मान प्राप्त करें
PageableRequestMapping.java (एनोटेशन)
package org.tothought.controllers.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface PageableRequestMapping {
String variablePath() default "/";
}
छद्म कोड पुनः प्राप्त करना डिफ़ॉल्ट मान
private int parsePageNumber(StringBuffer requestURL,
PageableRequestMapping pageableRequestMapping) {
String variablePath = pageableRequestMapping.variablePath();
//Psuedo code doesn't work in Java, included to illustrate intentions
if(variablePath.equalsIgnoreCase(pageableRequestMapping.variablePath().default())){
//handle default case
}else{
//handle different case
}
return 0;
}
मुद्दे के मेरे शोध कोई उदाहरण कर दिया गया है। मैंने सिद्धांत दिया कि इस मूल्य को कक्षा के माध्यम से स्थिर तरीके से पहुंचा जा सकता है, लेकिन यह नहीं हो सकता है। तो मुझे दो प्रश्नों के साथ छोड़ दिया गया है।
- क्या एनोटेशन के भीतर किसी तत्व का डिफ़ॉल्ट मान प्राप्त करना संभव है?
- यदि हां, तो कैसे?
इसके अलावा, मुझे पता है कि मैं इस मूल्य को कड़ी मेहनत कर सकता हूं, हालांकि मैं प्रोग्राम को थोड़ा और मजबूत बनाना चाहता हूं।
समाधान वापस लौट रहा है; मैं यह सुनिश्चित करने के लिए जांच कर रहा हूं कि यह मेरा नहीं है। क्या यह कोड आप भाग गए हैं? –
मैंने एक परीक्षण कार्यक्रम लिखा, जो सफलतापूर्वक चलता है: http://pastie.org/5356931 – Vulcan
मैंने अभी इसे समझ लिया और आपके पेस्ट ने इसकी पुष्टि की। आपको कक्षा को स्थिर तरीके से प्राप्त करने की आवश्यकता है। 'पेजेबल RequestMapping.getClass' के बजाय आपको' PageableRequestMapping.class' का उपयोग करने की आवश्यकता है। मुझे आश्चर्य है कि उदाहरण से वर्ग को कक्षा में पहुंचने से अलग क्यों है। महान जवाब के लिए धन्यवाद, मैं इसकी सराहना करता हूं। –