zoukankan      html  css  js  c++  java
  • 全面解析java注解

    相信有过编程经验的人都见过注解这种东西,也许像我一样,会用、熟练之后,也就一直放那不管了。但是有没有一天突然想到,注解是个什么东西,如果你想到了,那么恭喜你,恭喜你想到了。不论多么复杂的框架、多么复杂的代码、无非是封装、继承、反射、泛型。但是,注解这种东西,是完全独立于java正常体系之外的东西,所以今天在这里一探究竟。

    1.java常用注解:@Override(覆盖,覆写),@Deprecated(表明该方法已经过时,在调用的时候会有警告),@Suppvisewarnings(忽略某些警告)

    2.自定义注解:

    @Inherited//表示该注解注解的类,被继承的时候,子类也有了该注解(只能作用于类,不能作用于方法和接口)
    @Retention(RetentionPolicy.SOURCE)//注解的生命周期,可以是源码期,编译期,运行期
    @Target({ElementType.TYPE,ElementType.METHOD})//注解的作用域,可以是类,也可以是方法
    @Documented//表示生成Javadoc的时候会包含注解信息
    public @interface zhujie {
      String desc();//注解的内容,实际上是一个变量,其类型只能是基本类型和String、Enumeration等常见类型
      int age() default 18;
    }

    3.解析注解

    public class Jiexi {
        public static void main(String[] args){
            try {
                //先通过反射获取到java类
                Class a=Class.forName("A");
    
                //该方法来查看某类是否有注解,参数是定义的注解类的Class对象
                boolean isExist=a.isAnnotationPresent(zhujie.class);
                if(isExist){
                    System.out.println("我是类上的注解");
                }
    
                //用反射方法获取该类的所有方法,并且查看是否含有某注解
                Method[]methods=a.getMethods();
                for (int i = 0; i < methods.length; i++) {
                    Method method=methods[i];
                    boolean isExist2=method.isAnnotationPresent(zhujie.class);
                    if(isExist2){
                        System.out.println("我是方法上的注解");
                    }
    
                    //也可以获取某方法上面的所有注解,一个一个遍历找到是否包含自己要找的注解
                    Annotation annotation[]=method.getAnnotations();
                    for (Annotation annotation1 : annotation) {
                        if(annotation1 instanceof zhujie){
                            System.out.println("我是方法上的注解!");
                        }
                    }
                }
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    Sql server之路 (三)添加本地数据库SDF文件
    Ps 之路 更改前景色
    wp7 xml
    安装程序在安装此软件包时遇到一个错误,这可能表示此软件包有错。错误码是29506
    WebService之路
    Wcf for wp8 上传图片到服务器,将图片名字插入数据库字段(五)
    C# 读取本地图片 转存到其他盘符
    如何在程序中执行动态生成的Delphi代码
    用 GetEnvironmentVariable 获取常用系统环境变量
    修改window.external使JS可调用Delphi方法
  • 原文地址:https://www.cnblogs.com/xiaoao/p/10574269.html
Copyright © 2011-2022 走看看