首页 > 代码库 > Java注解
Java注解
1:所有注解都是类
2:所有注解类都默认是Annotation接口的子类。
3:定义方式:
public @interface SomeAnotation{ }
4:可以注解的位置
类上
方法上
成员变量上。
返回值上
参数上
局部变量
5、如果定义了一个注解之后,没有说明这个注解可以注解的位置,则这个注解就可以注解在所有位置上
6:用途
6.1:在编译时起到限制的作用.
6.2:在运行时组反射使用
所有类的字节码Class,Method,Field,Constractor都拥有一个方法:
7、注解的实例化
永远都不要实例化注解类,因注解是由系统通过反射实例化的。
1 @Retention(RetentionPolicy.RUNTIME)//指定在运行时存在
2 @Target(value=http://www.mamicode.com/{ElementType.METHOD})//注解的位置
通过@Target定义某个注解可以注解的位置
Retention,用于定义注解存在的策略
1 System.err.println("请输入准备被测试的类:"); 2 Scanner sc = new Scanner(System.in); 3 String clsName = sc.nextLine();//clsName = "cn.itcast.demo.RunTest"; 4 //根据类名获取这个类的字节 5 Class cls = Class.forName(clsName); 6 //实例化这个类,调用默认构造方法 7 Object obj = cls.newInstance(); 8 9 //获取这个类中的所有方法10 Method[] ms = cls.getDeclaredMethods();//只获取用户定义的方法,private && public11 //cls.getMethods();获取这个类所方法,包括从父类中继承的方法12 //遍历判断某个方法上是否存在注解13 for(Method m:ms){14 boolean boo2 = m.isAnnotationPresent(MyTest.class);//false15 if(boo2){16 if(m.getModifiers()==Modifier.PRIVATE){17 System.err.println("这个私有的方法:"+m.getName()+",不支持运行...");18 continue;19 }20 //运行这个方法21 m.invoke(obj);22 }23 }
1 RunTest run = new RunTest();2 Method m1 = run.getClass().getMethod("bbb");3 //获取这个方法上的注解的实例4 MyTest mt = m1.getAnnotation(MyTest.class);5 //获取这个注解上的属性的值6 String name = mt.name();7 String value =http://www.mamicode.com/ mt.value();8 System.err.println(name+","+value);
Java注解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。