zoukankan      html  css  js  c++  java
  • 注解

    定义

    注解(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();
            }
        }
    
  • 相关阅读:
    ODBC接口规范
    JDBC与ODBC
    java中newInstance()和new()
    JDBC详解
    用JDBC连接 数据库 进行简单的增删改查
    JDBC接口规范
    JDBC中常用的接口
    java中的getStackTrace和printStackTrace的区别
    linux中的strings命令
    JAVA的容器---List,Map,Set (转)
  • 原文地址:https://www.cnblogs.com/pallcard-LK/p/10892590.html
Copyright © 2011-2022 走看看