zoukankan      html  css  js  c++  java
  • 注解

    一、概述

    注解:告诉编译器如何运行程序。

    作用:1. 告诉编译器如何运行程序;2. 简化(取代)配置文件

    二、常用的注解

        // 重写父类的方法
        @Override
        public String toString() {
            return super.toString();
        }
        
        // 抑制编译器警告
        @SuppressWarnings({"unused","unchecked"})
        private void save() {
            List list = null;
        }
        
        // 标记方法以及过时
        @Deprecated
        private void save1() {
        }

     三、自定义注解

    通过自定义注解,可以给类、字段、方法上添加描述信息!

    1.注解基本写法

    /**
     * 自定义注解  (描述一个作者)
     *
     */
    public @interface Author {
    
        /**
         * 注解属性
         *       1. 修饰为默认或public
         *       2. 不能有主体
         */
        String name();
        int age();
    }

     使用:

       @Author(name = "Jet", age = 30)
        public void save() {
    
        }

     2.带默认值的注解

    public @interface Author {
    
        /**
         * 注解属性
         *       1. 修饰为默认或public
         *    2. 不能有主体
         */
        String name();
        int age() default 30;   // 带默认值的注解;  使用的时候就可以不写此属性值

     3.默认名称的注解

    注解属性名称为value,这就是默认名称

    public @interface Author {
        // 如果注解名称为value,使用时候可以省略名称,直接给值
        // (且注解只有一个属性时候才可以省略名称)
        String value();
    }

     使用

    @Author("Jet")
    @Author(value = "Jet")

      4.注解属性类型为数组

    public @interface Author {
        
        String[] value() default {"test1","test2"};
    }

     使用:

    @Author({“”,“”})
    public void save() {
    
    }

     四、元注解

    元注解:表示用在注解的注解!

    1.指定注解的可用范围

    @Target({
      ElementType.TYPE,      类
      ElementType.FIELD,     字段
      ElementType.METHOD,    方法
      ElementType.PARAMETER,   参数
      ElementType.CONSTRUCTOR, 构造器
      ElementType.LOCAL_VARIABLE  局部变量
    })

    2.指定注解的生命周期

    @Retention(RetentionPolicy.SOURCE)        注解只在源码时期有效
    @Retention(RetentionPolicy.CLASS)         注解在字节码级别有效  默认值
    @Retention(RetentionPolicy.RUNTIME)       注解在运行时期有效

     五、注解反射

        @Author(remark = "保存信息!!!", age = 19)
        public void save() throws Exception {
            // 获取注解信息: name/age/remark
            
            
            // 1. 先获取代表方法的Method类型;
            Class clazz = App_2.class;
            Method m = clazz.getMethod("save");
            
            // 2. 再获取方法上的注解
            Author author = m.getAnnotation(Author.class);
            // 获取输出注解信息
            System.out.println(author.authorName());
            System.out.println(author.age());
            System.out.println(author.remark());
        }
  • 相关阅读:
    AS3 Signals
    Activate、Deactivate 事件 Activate ThrottleEvent;
    Git 单机版
    SVN 快速入门
    Git 简介
    SVN
    Git
    Python 对目录做遍历
    Python hashlib 模块
    __name__
  • 原文地址:https://www.cnblogs.com/FlySheep/p/4751967.html
Copyright © 2011-2022 走看看