注解

2020-08-14  本文已影响0人  还是那个没头脑

1.1 注解概述

概念:说明程序的。给计算机看的

注释:用文字描述程序的。给程序员看的

定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、 接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

作用分类

常见注解

  1. @author:用来标识作者名
  2. @version:用于标识对象的版本号,适用范围:文件、类、方法。
  3. @Override :用来修饰方法声明,告诉编译器该方法是重写父类中的方法,如果父类不存在该方法,则编译失败。
  4. @Deprecated :该注解标注的内容,表示已过时
  5. @SuppressWarnings :压制警告, 一般传递传递参数all @SuppressWarnings("all")

1.2 自定义注解

定义格式
元注解 
public @interface 注解名称{    
    属性列表; 
}
注解的属性
  1. 属性的作用
  1. 属性的格式
  1. 属性定义示例
public @interface Student {  
    String name(); // 姓名  
    int age() default 18; // 年龄  
    String gender() default "男"; // 性别 
} 
// 该注解就有了三个属性:name,age,gender
  1. 属性的返回值类型

1.3 使用自定义注解

在程序中使用(解析)注解的步骤(获取注解中定义的属性值):

  1. 获取注解定义的位置的对象 (Class,Method,Field)
  2. 获取指定的注解 getAnnotation(Class)
  3. 调用注解中的抽象方法获取配置的属性值

使用格式:
@注解名(属性名=属性值,属性名=属性值,属性名=属性值...)

定义注解
  1. 定义一个注解:Book
  1. 代码实现
public @interface Book {    
    // 书名    
    String value();    
    // 价格    
    double price() default 100;    
    // 多位作者    
    String[] authors(); 
}
使用注解
  1. 定义类在成员方法上使用Book注解
/** 
* @author itheima 
* @version 1.0 
*/ 
public class BookShelf {   
   
    @Book(value = "西游记",price = 998,authors = {"吴承恩","白求恩"})    
    public void showBook(){
 
    } 
}
  1. 使用注意事项
    1.如果属性有默认值,则使用注解的时候,这个属性可以不用赋值。
    2.如果属性没有默认值,那么在使用注解时一定要给属性赋值。
    3.数组赋值时,值使用{}包裹。如果数组中只有一个值,则{}省略。
特殊属性value
  1. 当注解中只有一个属性且名称是value,在使用注解时给value属性赋值可以直接给属性值,无论value是单值元素还是数组类型。
// 定义注解Book
public @interface Book {    
    // 书名    
    String value(); 
}
 
// 使用注解Book 
public class BookShelf {    
    @Book("西游记")    
    public void showBook(){
 
    } 
} 
或 
public class BookShelf {    
    @Book(value="西游记")    
    public void showBook(){
 
    } 
}

2.如果注解中除了value属性还有其他属性,且至少有一个属性没有默认值,则在使用注解给属性赋值时,value属性名不能省略。

// 定义注解Book 
public @interface Book {    
    // 书名    
    String value();    
    // 价格    
    double price() default 100;    
    // 多位作者    
    String[] authors(); 
} 
// 使用Book注解:正确方式 
@Book(value="红楼梦",authors = "曹雪芹") 
public class BookShelf {  
    // 使用Book注解:正确方式    
    @Book(value="西游记",authors = {"吴承恩","白求恩"})    
    public void showBook(){
 
    } 
}
 
// 使用Book注解:错误方式 
public class BookShelf {    
    @Book("西游记",authors = {"吴承恩","白求恩"})    
    public void showBook(){
 
    } 
} 
// 此时value属性名不能省略了。

1.4元注解

元注解:用于描述注解的注解

上一篇 下一篇

猜你喜欢

热点阅读