Java反射机制总结(实例分析)(二)

java

               long long ago,写过一篇反射机制总结一,后来一直没有续写,今天续写一下反射机制的第二篇总结:

利用反射操作Annotation。因为上一篇已经涵盖了反射的所有入门知识,所以这篇不做过多叙述。如果需要从头学起,

建议看看我的上一篇随笔Java反射机制总结(实例分析)(一)。

上代码:自定义注释类

package com.sy.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

@Documented
public @interface MyAnnotation {

    String p() default "shiyang";

    String p2();

}

使用注释的类:

package com.sy.annotation;

public class MyTest {

    @MyAnnotation(p2="haha")

    public void output() {

        System.out.println("output something");

    }

}

反射读取注释的类:

package com.sy.reflection;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

import com.sy.annotation.MyAnnotation;
import com.sy.annotation.MyTest;

public class MyReflection {

    public static void main(String[] args) throws Exception{

        MyTest myTest=new MyTest();

        Class<MyTest> c=MyTest.class;

        

        Method method=c.getMethod("output",new Class[]{});

        

        if (method.isAnnotationPresent(MyAnnotation.class)) {

            

            method.invoke(myTest,new Object[]{});

            MyAnnotation myAnnotation=method.getAnnotation(MyAnnotation.class);

            

            String p=myAnnotation.p();

            String p2=myAnnotation.p2();

            

            System.out.println(p+","+p2);

        }

        

        Annotation[] annotations=method.getAnnotations();

        for (Annotation annotation : annotations) {

            System.out.println(annotation.annotationType().getName());

        }

    }

}

代码很简洁,抛砖引玉。

以上是 Java反射机制总结(实例分析)(二) 的全部内容, 来源链接: utcz.com/z/392049.html

回到顶部