zoukankan      html  css  js  c++  java
  • JAVA 注解教程(三)注解的属性

    简介

    注解的属性也叫做成员变量,注解只有成员变量,没有方法。注解的成员变量在注解的定义中以“无形参的方法”形式来声明,其方法名定义了该成员变量的名字,其返回值定义了该成员变量的类型

    实例

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface TestAnnotation {
    
        int id();
    
        String msg();
    
    }

    备注:上面代码定义了 TestAnnotation 这个注解中拥有 id 和 msg 两个属性。在使用的时候,我们应该给它们进行赋值。

    赋值

    赋值的方式是在注解的括号内以 value=”” 形式,多个属性之前用 ,隔开。

    @TestAnnotation(id=3,msg="hello annotation")
    public class Test {
    
    }

    备注:在注解中定义属性时它的类型必须是 8 种基本数据类型外加 类、接口、注解及它们的数组

    默认值

    注解中属性可以有默认值,默认值需要用 default 关键值指定。比如:

    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface TestAnnotation {
    
        public int id() default -1;
    
        public String msg() default "Hi";
    
    }

    备注:TestAnnotation 中 id 属性默认值为 -1,msg 属性默认值为 Hi。
    它可以这样应用

    @TestAnnotation()
    public class Test {}

    因为有默认值,所以无需要再在 @TestAnnotation 后面的括号里面进行赋值了,这一步可以省略。

    默认的value

    如果一个注解内仅仅只有一个名字为 value 的属性时,应用这个注解时可以直接把属性值填写到括号内。

    public @interface Check {
        String value();
    }

    上面代码中,Check 这个注解只有 value 这个属性,所以可以这样应用。

    @Check("hi")
    int a;

    这和下面的效果是一样的

    @Check(value="hi")
    int a;

    无属性

    一个注解没有任何属性,比如

    public @interface Perform {}

    那么在应用这个注解的时候,括号都可以省略。

    @Perform
    public void testMethod(){}

    --------------------- 本文摘取 frank909 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/briblue/article/details/73824058?utm_source=copy 

  • 相关阅读:
    viso图插入Word中大片空白解决办法
    面向对象设计模式中的单例模式和工厂模式
    面向对象知识整理
    require和include的区别及自动加载的定义
    面向对象的三大特性及定义
    重写和重载的区别 (部分内容转自竹木人)
    面向对象的基本概念
    PHP json_encode( ) 函数介绍
    js页面跳转常用的几种方式
    js中页面刷新和页面跳转的方法总结 [ 转自欢醉同学 ]
  • 原文地址:https://www.cnblogs.com/7q4w1e/p/9719771.html
Copyright © 2011-2022 走看看