• 注解


    定义

    注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
    通俗的说就是一个标签,使用这个标签来对要标记的对象做说明,主要是与Java中的反射想结合来使用。

    public @interface Name {
        String value() default "";
    }
    

    元注解

    注释注解的注解
    包括 @Target @Retention @Document @Inherited四种。

    @Target 定义注解的作用目标

    @Target(ElementType.TYPE)  //接口、类、枚举、注解
    @Target(ElementType.FIELD) //字段、枚举的常量
    @Target(ElementType.METHOD) //方法
    @Target(ElementType.PARAMETER) //方法参数
    @Target(ElementType.CONSTRUCTOR)  //构造函数
    @Target(ElementType.LOCAL_VARIABLE)//局部变量
    @Target(ElementType.ANNOTATION_TYPE)//注解
    @Target(ElementType.PACKAGE) ///包   
    

    @Retention 说明该注解保持的时间

    @Retention(RetentionPolicy.SOURCE) //注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
    @Retention(RetentionPolicy.CLASS) //注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
    @Retention(RetentionPolicy.RUNTIME) //注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
    

    由于一般注解都会配合着反射来使用,故一般将其设置为 RUNTIME
    @Document 说明该注解将被包含在javadoc中
    @Inherited 说明子类可以继承父类中的该注解

    举例说明:

    //定义一个@Name注解
    @Target(ElementType.FIELD)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Name {
        String value() default "";
    }
    
    //定义一个Person类,并使用@Name注解
    public class Person {
        @Name("卡卡罗特")
        private String name;
    
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
    
        //测试
        @Test
        public void testAnnotation(){
            try {
                Name name = Person.class.getDeclaredField("name").getAnnotation(Name.class);
                System.out.println(name.value());
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            }
        }
    
  • 相关阅读:
    ASP.NET上传文件的三种基本方法
    实例分析 equals 和 ==
    如何保证Web Service的安全
    Winform动态显示图片,数据流方式
    C# 文件保存到数据库中或者从数据库中读取文件
    简说Session
    NotifyIcon的简单使用
    c# Invoke和BeginInvoke 区别
    DataGridView 的 CurrentCellDirtyStateChanged事件用法
    十种发送邮件的方式
  • 原文地址:https://www.cnblogs.com/pallcard-LK/p/10892590.html
Copyright © 2020-2023  润新知