java 自定义注解

    xiaoxiao2021-03-25  40

    不多说,只看代码。

    import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ElementType.METHOD,ElementType.TYPE})//注解范围 @Retention(RetentionPolicy.RUNTIME)//注解运行机制 @Inherited//标识性的元注解,它允许子注解继承它。 @Documented//生成javadoc时会包含注解。 public @interface Descript { String value(); } public class DDDD { @Descript("yellow") public String color(){ return "black"; } public class Test { public static void main(String[] args) { try { @SuppressWarnings("rawtypes") Class c = Class.forName("com.DDDD"); @SuppressWarnings("unchecked") boolean isExist = c.isAnnotationPresent(Descript.class); if(isExist){ @SuppressWarnings("unchecked") Descript d = (Descript) c.getAnnotation(Descript.class); System.out.println(d); } //获取所有的方法 Method[] ms = c.getMethods(); // 遍历所有的方法 for (Method m : ms) { boolean isExist1 = m.isAnnotationPresent(Descript.class); if (isExist1) { Descript d1=m.getAnnotation(Descript.class); System.out.println(d1.value()); } } //另一种解析方法 for (Method m : ms) { //拿到方法上的所有的注解 Annotation[] as=m.getAnnotations(); for (Annotation a : as) { //用二元操作符判断a是否是Description的实例 if (a instanceof Descript) { Descript d=(Descript) a; System.out.println(d.value()); } } } } catch (Exception e) { e.printStackTrace(); } } }
    转载请注明原文地址: https://ju.6miu.com/read-50116.html

    最新回复(0)