आप नहीं कर सकते। प्रतिबिंब में विधि चरम सहित स्थानीय चरों तक पहुंच नहीं है। ,
इन सभी में, आप विधि कॉल से पैरामीटर एकत्र करेंगे और फिर विधि कॉल निष्पादित करने के लिए बताएंगे। लेकिन प्रतिबिंब के माध्यम से विधि पैरामीटर पर जाने का कोई तरीका नहीं है।
अद्यतन: यहाँ आप AspectJ
public aspect ValidationAspect {
pointcut serviceMethodCall() : execution(public * com.yourcompany.**.*(..));
Object around(final Object[] args) : serviceMethodCall() && args(args){
Signature signature = thisJoinPointStaticPart.getSignature();
if(signature instanceof MethodSignature){
MethodSignature ms = (MethodSignature) signature;
Method method = ms.getMethod();
Annotation[][] parameterAnnotations =
method.getParameterAnnotations();
String[] parameterNames = ms.getParameterNames();
for(int i = 0; i < parameterAnnotations.length; i++){
Annotation[] annotations = parameterAnnotations[i];
validateParameter(parameterNames[i], args[i],annotations);
}
}
return proceed(args);
}
private void validateParameter(String paramName, Object object,
Annotation[] annotations){
// validate object against the annotations
// throw a RuntimeException if validation fails
}
}
स्रोत
2011-08-29 12:56:16
साथ एनोटेशन आधारित सत्यापन का उपयोग करते हुए मैं सवाल नहीं मिलता है आरंभ करने के लिए एक नमूना पहलू है। 'बार' का मान केवल रनटाइम के दौरान उपलब्ध होगा। क्या आप 'उदाहरण' पर कॉल को अवरुद्ध करना चाहते हैं? या क्या आपका मतलब डेटाटाइप 'बार' है? – home