Yapamazsınız. Yansıma, yöntem parametreleri de dahil olmak üzere yerel değişkenlere erişemez. ,
Tüm bunlarda, parametreleri yöntem çağrısından toplar ve ardından yöntem çağrısını yürütmesini söylersiniz. Ancak, yansıma yoluyla yöntem parametrelerine ulaşmanın bir yolu yoktur.
Güncelleme: burada ben soru alamadım 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
}
}
ile ek açıklama tabanlı doğrulama kullanmaya başlamasını sağlamak için örnek bir yönü var. 'Bar 'değeri sadece çalışma zamanında kullanılabilir. 'Example' için çağrıları engellemek istiyor musunuz? Yoksa "Bar" veri türünü mi kastediyorsunuz? – home