java.lang.reflect를 가져오는 중입니다.Proceeding JoinPoint의 메서드?
질문은 짧고 간단합니다.appectjProceedingJoinPoint에서 메서드 개체를 가져올 수 있는 방법이 있습니까?
현재 저는 하고 있습니다.
Class[] parameterTypes = new Class[joinPoint.getArgs().length];
Object[] args = joinPoint.getArgs();
for(int i=0; i<args.length; i++) {
if(args[i] != null) {
parameterTypes[i] = args[i].getClass();
}
else {
parameterTypes[i] = null;
}
}
String methodName = joinPoint.getSignature().getName();
Method method = joinPoint.getSignature()
.getDeclaringType().getMethod(methodName, parameterTypes);
하지만 이 방법은 아닌 것 같아요...
당신의 방법이 틀린 것은 아니지만, 더 좋은 방법이 있습니다.캐스팅을 해야 합니다.
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
당신은 조심해야 합니다 왜냐하면Method method = signature.getMethod()
인터페이스의 메서드를 반환합니다. 구현 클래스의 메서드를 가져오려면 이 메서드를 추가해야 합니다.
if (method.getDeclaringClass().isInterface()) {
try {
method= jointPoint.getTarget().getClass().getDeclaredMethod(jointPoint.getSignature().getName(),
method.getParameterTypes());
} catch (final SecurityException exception) {
//...
} catch (final NoSuchMethodException exception) {
//...
}
}
(캐치된 코드는 자발적으로 비어 있습니다. 예외를 관리할 코드를 추가하는 것이 좋습니다.)
인터페이스에 없는 메서드 또는 매개 변수 주석에 액세스하려는 경우 이를 사용하여 구현할 수 있습니다.
언급URL : https://stackoverflow.com/questions/5714411/getting-the-java-lang-reflect-method-from-a-proceedingjoinpoint
'programing' 카테고리의 다른 글
Google App Engine 사용에 대한 피드백? (0) | 2023.08.12 |
---|---|
jQuery.jax()를 사용하여 이미지를 가져와 base64로 디코딩합니다. (0) | 2023.08.12 |
심포니 4와 교리:경고: 쿼리 패킷을 보내는 동안 오류가 발생했습니다.PID=2989 (0) | 2023.08.12 |
Centos 7에서 mysql 설치 문제 (0) | 2023.08.12 |
R(RMariaDB)/R의 정수 변환을 통해 MySQL/MariaDB를 쿼리할 때 숫자가 변경됩니다. (0) | 2023.08.12 |