zoukankan      html  css  js  c++  java
  • java注解

    注解包含元注解和自定义注解

    元注解:

    元注解的作用就是负责注解其他注解。java提供了4个标准的meta-annotation类型,它们用来提供对其它annotation类型作说明:

    1  @Target

    2  @Retention

    3  @Documented

    4  @Inherited

    @Target:

    说明Annotation所修饰的对象范围:可用于packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量。

    作用:用于描述注解的使用范围

    取值(ElementType)有:

    1.CONSTRUCTOR:用于描述构造器

    2.FILED:用于描述域

    3.LOCL_VARIABLE:用于描述局部变量

    4.METHOD:用于描述方法

    5.PACKAGE:用于描述包
    6.PARAMETER:用于描述参数
    7.TYPE:用于描述类、接口(包括注解类型) 或enum声明

    @Target(ElementType.TYPE)
    public @interface Table {
        /**
         * 数据表名称注解,默认值为类名称
         * @return
         */
        public String tableName() default "className";
    }
    
    @Target(ElementType.FIELD)
    public @interface NoDBColumn {
    
    }

    @注解Table可以用于注解类、接口或ENUM声明,而注解NoDBColumn仅可以注解类的成员变量

    @Retention:

    定义了该Annotation被保留的时间长短:某些Annotation仅出现在源代码中,而被编译器丢弃;而另一些缺被编译在class中,编译在class中的Annotation可能会被虚拟机忽略,而另一些在class被装载时被读取。使用这个元注解可以对Annotation“生命周期”限制。

    作用:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(即:被描述的注解在什么范围内有效)

    取值(RetentionPolicy)有:

    1  SOURCE:在源文件中有效(即源文件保留)

    2  CLASS:在class文件中有效(即CLASS保留)

    3  RUNTIME:在运行时有效(即运行时保留)

    @Target(ElementType.FIELD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface Column {
        public String name() default "fieldName";
        public String setFuncName() default "setField";
        public String getFuncName() default "getField"; 
        public boolean defaultDBValue() default false;
    }板 

    Colum注解的RetentionPolicy是RUNTIME,这样处理器可以通过反射,获取到该注解的属性值,进行一些运算逻辑处理。

    @Documented:

    用于描述其它类型的注解应该被作为被标注的程序成员的公共API,可以被例如javadoc此类的工具文档化。Documented是一个标记注解,没有成员。

    @Target(ElementType.FIELD)
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Column {
        public String name() default "fieldName";
        public String setFuncName() default "setField";
        public String getFuncName() default "getField"; 
        public boolean defaultDBValue() default false;
    }

    @Inherited:

    是一个标记注解,阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。

    /**
     * 
     * @author peida
     *
     */
    @Inherited
    public @interface Greeting {
        public enum FontColor{ BULE,RED,GREEN};
        String name();
        FontColor fontColor() default FontColor.GREEN;
    }

    自定义注解@interface

    格式:

    public @interface 注解名 {定义体}

  • 相关阅读:
    19.音乐查询l练习
    python用requests爬取新浪财经首页要闻
    关于Pyhton正则报错: sre_constants.error: nothing to repeat at position
    python中的字典
    Python flask jQuery ajax 上传文件
    python中与时间有关的对象-datetime、time、date
    python os模块之实现多层目录文件查找
    python 字符串格式化输出 %d,%s及 format函数, 数字百分化输出
    linux unbuntu 虚拟环境 安装沙盒virtualenv 、virtualenvwrapper
    python实现二分查找
  • 原文地址:https://www.cnblogs.com/runwulingsheng/p/5512922.html
Copyright © 2011-2022 走看看