Java自定义注解根据目标方法执行不同的逻辑
时间: 2024-02-21 09:56:56 浏览: 26
Java自定义注解可以根据目标方法执行不同的逻辑,这里提供一种基于反射的实现方式。
首先定义一个自定义注解,例如:
```
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation {
String value();
}
```
然后在目标方法上添加该注解,例如:
```
public class MyClass {
@MyAnnotation("foo")
public void foo() {
System.out.println("foo");
}
@MyAnnotation("bar")
public void bar() {
System.out.println("bar");
}
}
```
接下来,我们通过反射获取MyClass类中所有的方法,并判断方法上是否有MyAnnotation注解,根据注解的value值执行对应的逻辑,例如:
```
public class AnnotationDemo {
public static void main(String[] args) throws Exception {
MyClass obj = new MyClass();
Method[] methods = obj.getClass().getDeclaredMethods();
for (Method method : methods) {
if (method.isAnnotationPresent(MyAnnotation.class)) {
MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
String value = annotation.value();
if ("foo".equals(value)) {
obj.foo();
} else if ("bar".equals(value)) {
obj.bar();
} else {
// 执行其他逻辑
}
}
}
}
}
```
在上面的示例中,我们通过反射获取MyClass类中所有的方法,判断方法上是否有MyAnnotation注解,如果有,则获取注解的value值,根据值执行对应的逻辑。
这样,我们就可以根据自定义注解的值执行不同的逻辑。当然,这只是一种简单的实现方式,具体的实现方式可以根据实际需要进行调整。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)