zoukankan      html  css  js  c++  java
  • 注解之注解的属性

    • 注解的属性也叫做成员变量。注解只有成员变量,没有方法。
    • 注解的成员变量在注解的定义中以“无形参的方法”形式来声明
    • 其方法名定义了该成员变量的名字,其返回值定义了该成员变量的类型。
    • 注解中属性可以有默认值,默认值需要用 default 关键值指定。
    @interface AnnotationTest{
    String value();
    int sex() default 1;
    }
    // 注解中有多个属性,赋值的方式:括号内以 value="",多个属性之前用 ,隔开。
    
    @AnnotationTest(value="3",sex=0)
    public class Test {
    }

    有默认值且不想改值,无需在 @TestAnnotation 后的括号中为sex进行赋值了

    如一个注解内仅只有一个成员变量且名字为 value 的属性时,应用这个注解时可直接写属性值到括号内。

    注解没有任何属性,括号都可以省略。

     自定义注解类编写的一些规则:

    • 所有的Annotation会自动继承java.lang.annotation.Annotation,并不能继承别的类或是接口
    • 参数成员只能用public或默认(default)这两个访问权修饰
    •  参数成员只能用基本数据类型(char,boolean,byte、short、int、long、float、double)和String、Enum、Class、annotations数据类型,以及这一些类型的数组

    • 要获取类方法和字段的注解信息,必须通过Java的反射技术来获取 Annotation对象,除此之外没有别的获取注解对象的方法

     示例代码:

    /**
     * 注解的属性
     * ★ 注解的属性也叫做成员变量。注解只有成员变量,没有方法。
     * ★ 注解的成员变量在注解的定义中以“无形参的方法”形式来声明,
     * 其方法名定义了该成员变量的名字,其返回值定义了该成员变量的类型。
     * 注解中属性可以有默认值,默认值需要用 default 关键值指定。
     */
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface AnnotationField {
        String tableName();//注解的成员变量:无形参方法
        // 返回值是成员变量的类型,tableName是成员变量名称
        //默认值需要用 default 关键值指定
        //以下报错:
        //Integer flag Default 1;Default需要小写
        //Integer flag() default 1; 注解的成员变量在注解的定义中以“无形参的方法”形式来声明,所以需要使用flag()来声明
        //Integer flag() default 1;报错原因是因为参数成员 变量只能使用基本的数据类型
        // (char,boolean,byte,short,int,float,double)和(String,Enum,Class,annotations)等这些数据类型,以及这一些类型的数组
        //不能使用包装类对象,因为其是一个应用类型并不是一个基本数据类型
        //注解中所有的成员对象在使用注解时都需要被使用,除了default默认值以外
        //因为default值是默认的,我们不需要写,使用注解时也知道这个值是多少
        int flag() default 1;
    }
    //当一个注解中只有一个注解属性且名为value,
    // 那么在使用的时候可以直接使用@AnnotationTest1("tb_table")。
    // 若果没有属性,括号也可以省略
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface AnnotationTest1 {
        String value();
    }
    @AnnotationField(tableName = "tb_animal", flag = 0)//使用多个注解值,中间用,割开,如果不想使用默认值,可以在注解中为其重新赋值
    @AnnotationTest1("tb_animal")
    public class Animal {
        private String name;
        private String sex;
        private Integer age;
    }
  • 相关阅读:
    Oracle逻辑备份与恢复
    Java调用webservice接口方法
    Weblogic11g下调WebService出现的一系列问题
    数字转中文【适用于金额转换和普通数字转换】
    Tomcat6环境JBPM4.4报错:java.lang.ClassNotFoundException: de.odysseus.el.util.SimpleResolver
    Hibernate之Criteria的完整用法
    Oracle SQL Developer连接报错(ORA-12505)
    Windows Storage Server 2008 R2 Standard(64位)之ASM(Automated Storage Manager)管理
    REHL5.5 linux的postfix的邮件服务器配置 (笔记)
    JVM中class文件探索与解析
  • 原文地址:https://www.cnblogs.com/huanghuanghui/p/10164754.html
Copyright © 2011-2022 走看看