Я хочу использовать тип void java, но я не могу. Вот мой код, который представляет собой аспектный запуск после всех методов, у которых @TraceLog
аннотации
@AfterReturning(value = "@annotation(log)",
returning = "returnValue",
argNames = "joinPoint, log, returnValue"
)
public void afterReturning(final JoinPoint joinPoint, final TraceLog log,
final Object returnValue) {
Class<?> returnType = ((MethodSignature) joinPoint.getSignature())
.getReturnType();
//It works when comperaing with string. But I want to write it with type of
if ("void".equals(returnType.getName()) ) {
//Do some log
}
}
В качестве правила кодирования Классы не следует сравнивать по имени (http://cwe.mitre.org/data/definitions/486.html), я попытался использовать (returnType instanceof Void
), но я сталкиваюсь с этими двумя ошибками времени компиляции в eclipse:
- Incompatible conditional operand types Class<capture#5-of ?> and Void
- The type Void is not generic; it cannot be parameterized with arguments <?>
Интересно, как я могу это исправить?!