我想在 java 中为 DirtyChecking
创建自定义注释。就像我想使用此注释比较两个字符串值,比较后将返回一个 boolean
值。
例如:我将把 @DirtyCheck("newValue","oldValue")
放在属性上。
假设我做了一个界面:
public @interface DirtyCheck {
String newValue();
String oldValue();
}
我的问题是:
- 我在哪里创建一个类来创建用于比较两个字符串值的方法?我的意思是,这个注解如何通知我必须调用这个方法?
- 如何获取该方法的返回值?
最佳答案
首先您需要标记注解是针对类、字段还是方法。假设它用于方法:所以您在注释定义中这样写:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DirtyCheck {
String newValue();
String oldValue();
}
接下来你必须编写比方说 DirtyChecker
类,它将使用反射来检查方法是否有注释并做一些工作,例如如果 oldValue
和 newValue
是相等的:
final class DirtyChecker {
public boolean process(Object instance) {
Class<?> clazz = instance.getClass();
for (Method m : clazz.getDeclaredMethods()) {
if (m.isAnnotationPresent(DirtyCheck.class)) {
DirtyCheck annotation = m.getAnnotation(DirtyCheck.class);
String newVal = annotation.newValue();
String oldVal = annotation.oldValue();
return newVal.equals(oldVal);
}
}
return false;
}
}
干杯, 迈克尔
关于java - 如何在 java 中创建自定义注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12260037/