Java之注解

注解

注解就是对一段程序进行标注和解释的

举例:

注解名说明
@Override描述子类重写父类方法
@Deprecated描述方法过时
@SuppressWarnings压制警告

注解和注释的区别:

注解注释
给编译器看的(代表了程序的一些特殊功能)给程序员看的

如何自定义注解?

格式

public @interface 注解名称{
    public 属性类型 属性名() default 默认值;
}

举例:

public @interface Anno1{
    public int a() default 10;
}

注:属性类型包括:基本数据类型、String、Class、注解、枚举、以上类型的一维数组。

package com.test4.test40;


/**
 * @author zhangzengxiu
 * @date 2021/12/1
 */
public @interface AnnoTest {

    /**
     * 基本数据类型、String、Class、注解、枚举、以上类型的一维数组。
     */

    //基本数据类型
    int a() default 10;//public可以省略不写 默认就是public

    //String
    public String name();

    //Class
    public Class clazz() default AnnoTest02.class;

    //注解
    public AnnoTest02 anno() default @AnnoTest02;

    //枚举
    public Season season() default Season.AUTUMN;

    //以上类型的一维数组 基本数据类型
    public int[] arr() default {1, 2, 3, 4, 5};

    //枚举数组
    public Season[] seasons() default {Season.AUTUMN, Season.SUMMER};

}

使用自定义注解:

package com.test4.test40;

/**
 * @author zhangzengxiu
 * @date 2021/12/1
 */
@AnnoTest(name = "xxx")
public class AnnoDemo {

}

注:如果在定义注解的过程中,属性没有给定指定默认值,那么在使用时就需要手动给出注解属性的设置值

特殊属性value:

自定义注解:

package com.test4.test40;

public @interface AnnoTest02 {
    public String value();
}

使用注解:

package com.test4.test40;

/**
 * @author zhangzengxiu
 * @date 2021/12/1
 */
@AnnoTest02("默认给value属性赋值")
public class AnnoDemo02 {

}

元注解:

元注解是用来描述注解的注解。

常见元注解:

元注解名说明
@Target指定了注解能在哪里使用
@Retention可以理解为注解的生命周期,默认只存在java源码阶段,编译为字节码问价就会消失
@Inherited表示修饰的自定义注解可以被子类继承
@Documented表示该自定义注解,会出现在API文档里面

举例说明:

import java.lang.annotation.*;

@Target({ElementType.TYPE,//可以使用在类上
        ElementType.FIELD,//可以使用在成员变量上
        ElementType.METHOD//可以使用在方法上
})
@Retention(RetentionPolicy.RUNTIME)//指定注解的存活时间,不写默认只存活于源码阶段
@Inherited//指定该注解可以被继承
public @interface AnnoTest02 {
    public String value();
}
完整的自定义注解:
@Target({ElementType.TYPE,ElementType.FIELD,ElementType.METHOD})//标明这个注解可以用在哪儿
@Retention(RetentionPolicy.RUNTIME)//指定注解的存活时间
@Inherited//指定该注解可以被继承
public @interface AnnoTest03 {
    public String value();
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值