实现“java自定义注解能放参数码”的方法

一、整体流程

定义注解 标注注解 解析注解 获取参数值

二、具体步骤

1. 定义注解

首先,我们需要定义一个自定义注解,用来标注需要传递参数的方法或类。

/**
 * 自定义注解
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    String value();
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • @Target 注解表示自定义注解可以标注在方法和类上;
  • @Retention 注解表示自定义注解在运行时可以被反射读取。
2. 标注注解

接着,在需要传递参数的地方,我们需要使用自定义注解标注。

@MyAnnotation(value = "参数值")
public class MyClass {
    
    @MyAnnotation(value = "参数值")
    public void myMethod() {
        // 方法体
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
3. 解析注解

然后,我们需要编写一个工具类来解析注解并获取参数值。

import java.lang.reflect.Method;

/**
 * 注解解析工具类
 */
public class MyAnnotationUtils {
    
    public static void parseAnnotation(Class<?> clazz) {
        if (clazz.isAnnotationPresent(MyAnnotation.class)) {
            MyAnnotation annotation = clazz.getAnnotation(MyAnnotation.class);
            String value = annotation.value();
            System.out.println("Class annotation value: " + value);
        }
        
        Method[] methods = clazz.getDeclaredMethods();
        for (Method method : methods) {
            if (method.isAnnotationPresent(MyAnnotation.class)) {
                MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
                String value = annotation.value();
                System.out.println("Method annotation value: " + value);
            }
        }
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
4. 获取参数值

最后,在需要获取参数值的地方,调用解析注解的方法即可。

public class Main {
    
    public static void main(String[] args) {
        MyClass myClass = new MyClass();
        MyAnnotationUtils.parseAnnotation(myClass.getClass());
        myClass.myMethod();
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

三、类图

MyAnnotation value: String MyClass MyAnnotationUtils Main

通过以上步骤,你就可以实现在 Java 中自定义注解并传递参数了。希木这篇文章对你有所帮助,加油!