zoukankan      html  css  js  c++  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={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 && public
    11         //cls.getMethods();获取这个类所方法,包括从父类中继承的方法
    12         //遍历判断某个方法上是否存在注解
    13         for(Method m:ms){
    14             boolean boo2 = m.isAnnotationPresent(MyTest.class);//false
    15             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 = mt.value();
    8         System.err.println(name+","+value);

  • 相关阅读:
    温故而知新-错误和异常处理
    温故而知新-面向对象的PHP
    Django框架之模板语法【转载】
    django2.0实现数据详情页展示的流程
    django2.0表的ORM字段类型和展示
    Fatal error: Cannot use object of type PHPExcel_RichText as array
    django2.0数据展示流程
    django2.0模板相关设置
    django2.0新增功能流程
    django2.0设置默认访问路由
  • 原文地址:https://www.cnblogs.com/liuwt365/p/4165754.html
Copyright © 2011-2022 走看看