Java的自定义注解

一 点睛

自定义注解允许开发者开发自己的注解,从而实现更加灵活的编程思想。

自定义注解的语法如下:

[public] @interface 自定义注解的名称{

    [数据类型 变量名称();]

}

注意点:@interface,必须加@,每个注解的声明,后面都要加()

元注解:定义注解的注解

常用的元注解:@Target @Retention @Documented @Inherited

定义注解时,往往配合元注解来丰富和完善注解的定义。

@Retention:表示在什么级别保存注解信息。

枚举值

说明

SOURCE

注解被编译器丢掉。

CLASS

注解在class文件中可用,但会被jVM丢弃。

RUNTIME

JVM将在编译、加载和运行期均保留注解,因此可以通过反射机制读取注解信息。

默认的编译器认为@Retention指定的是Class

@Target:表示该注解用于什么地方

枚举值

说明

TYPE

类,接口(包括注解类型)或enum声明

FIELD

域声明(包括enum实例)

METHOD

方法声明

PARAMETER

参数声明

CONSTRUCTOR

构造器声明

LOCAL_VARIABLE

局部变量声明

ANNOTATION_TYPE

注解声明

PACKAGE

包声明

二 自定义注解实战

// 定义了一个注解testAnnoation0
@interface testAnnoation0 {
    public String name() default "methodname";  // 指定注解的属性name,默认值为字符串methodname

    public String unit() default "unit";        // 指定注解属性unit,默认值为字符串unit
}

public class ch11_4 {
    public static void main( String[] args ) {
    }

    @testAnnoation0(name = "电池SOC", unit = "%") // 使用了该注解,并将注解的name设置为电池SOC,unit的值设置为%
    public void testAnnoation() {
    }
}

三 自定义注解实战——指定注解的作用对象

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
// 指定了注解testAnnoation1用于方法声明。如果用在非方法的元素上,编译不通过
@Target(ElementType.METHOD)
@interface testAnnoation1 {
    public String name() default "methodname";

    public String unit() default "unit";
}

public class ch11_5 {
    public static void main( String[] args ) {
    }

    @testAnnoation1(name = "电池SOC", unit = "%")
    public void testAnnoation() {
    }
}

四 自定义注解实战——指定注解的保存级别

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

// 指定注解的保留级别为RUNTIME,这意味着注解在编译、加载、运行期均保留注释信息
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@interface testAnnoation2 {
    public String name() default "methodname";

    public String unit() default "unit";
}

public class ch11_6 {
    public static void main( String[] args ) {
    }

    @testAnnoation2(name = "电池SOC", unit = "%")
    public void testAnnoation() {
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值