个人备忘--注解

来源:互联网 发布:淘宝返利赚钱吗 编辑:程序博客网 时间:2024/05/18 02:58
package Annotation;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定义了直接可以注释在方法体还是类上面field,等上面@Target({ElementType.METHOD,ElementType.TYPE})//Inherited 注释了改方法或类的子类会继承该接口@Inherited//RUNTIME时可以通过反射获取到注解中的方法@Retention(RetentionPolicy.RUNTIME)public @interface MyAnnotation {//value方法 在声明是value=可以省略 若数组值只有一个 也可以省略{}public String[] value();//当没有default时,声明注解时必须要指定value1的值public String value1() default "value1";}
package Annotation;@MyAnnotation(value={"myAnnotation1","myAnnotation2"},value1="myvalue")public class MyMain {@SuppressWarnings("unchecked")@MyAnnotation("myAnnotation")public void method() {System.out.println("do local method");}}

package Annotation;import java.lang.reflect.Constructor;import java.lang.reflect.Method;public class MyReflect {/** * Annotation反射方法调用 * @param args * @throws NoSuchMethodException  * @throws SecurityException  */public static void main(String[] args) throws Exception {Class<MyMain> ClassType=MyMain.class;Constructor<MyMain> c=ClassType.getConstructor();MyMain myMain=c.newInstance();//前面两句相当于  MyMain myMain=ClassType.newInstance();Method m=ClassType.getMethod("method");if(m.isAnnotationPresent(MyAnnotation.class)){MyAnnotation ma=m.getAnnotation(MyAnnotation.class);System.out.println(ma.value()[0]);System.out.println(ma.value1());myMain.method();}else{System.out.println("未找到对应的注解");}}}

运行结果:

myAnnotation
value1
do local method

原创粉丝点击