0%

java | 注解介绍

AnnotationJDK5.0 引入的。

注解不是程序本身,可以对程序作出解释

可以被其他程序读取。

内置注解

  • @Override
  • @Deprecated
    • 废弃
  • @SuppressWarnings
    • 用来抑制编译时警告信息,需要添加参数才能使用
    • @SuppressWarnings("all")
    • @SuppressWarnings("unchecked")
    • @SuppressWarnings(value={"unchecked","deprecation"})

元注解

负责注解其他注解。

  • @Target
    • 用于描述注解的使用范围
  • @Retention
    • 表示需要什么级别保存该注释信息,用于描述注解的生命周期
    • source < class < runtime
  • @Documented
    • 说明该注解被包含在 javadoc
  • @Inherited
    • 说明子类诶可以继承父类的该注解

@Target

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Item {
public int age;

public Item(int age) {
this.age = age;
}

@MyAnnotation
public int getAge() {
return this.age;
}
}

@Target(value = {ElementType.METHOD,ElementType.TYPE}) // Method 只能在方法中用,Type 只能在 类上用
@interface MyAnnotation{

}

自定义注解

  • @interface 用来声明一个注解
  • 其中每一个方法实际上是声明了一个配置参数
  • 方法的名称就是参数的名称
  • 返回值类型就是参数的类型(返回值只能是基本类型,ClassStringenum
  • 可以通过 default 来声明参数的默认值
  • 如果只有一个参数成员,一般参数名是 value
  • 注解元素必须要有值,我们定义注解元素时,经常使用空字符串,0 作为默认值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.redisc;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

class Item {
public int age;

public Item(int age) {
this.age = age;
}

// 注解显示赋值
@MyAnnotation(name = "test")
public int getAge() {
return this.age;
}

@MyAnnotation1("test")
public void test2(){

}
}

@Target(value = {ElementType.METHOD, ElementType.TYPE}) // Method 只能在方法中用,Type 只能在 类上用
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation {
// 注解的参数 :参数类型 + 参数名()注意,这不是方法
String name() default "";
int age() default 5;
int id() default -1;
String[] shhools() default {"清华大学"};
}

@Target(value = {ElementType.METHOD, ElementType.TYPE}) // Method 只能在方法中用,Type 只能在 类上用
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation1 {
// 注解的参数 :参数类型 + 参数名()注意,这不是方法
String value() default ""; // 只有一个值,最好用 value 命名,这样可以在注解的时候, value = "123" 省略成 "123"
}
请我喝杯咖啡吧~