gpt4 book ai didi

java - 如何在 java 中创建自定义注释?

转载 作者:搜寻专家 更新时间:2023-10-30 21:02:05 24 4
gpt4 key购买 nike

我想在 java 中为 DirtyChecking 创建自定义注释。就像我想使用此注释比较两个字符串值,比较后将返回一个 boolean 值。

例如:我将把 @DirtyCheck("newValue","oldValue") 放在属性上。

假设我做了一个界面:

 public @interface DirtyCheck {
String newValue();
String oldValue();
}

我的问题是:

  1. 我在哪里创建一个类来创建用于比较两个字符串值的方法?我的意思是,这个注解如何通知我必须调用这个方法?
  2. 如何获取该方法的返回值?

最佳答案

首先您需要标记注解是针对类、字段还是方法。假设它用于方法:所以您在注释定义中这样写:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DirtyCheck {
String newValue();
String oldValue();
}

接下来你必须编写比方说 DirtyChecker 类,它将使用反射来检查方法是否有注释并做一些工作,例如如果 oldValuenewValue 是相等的:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com