Java 注解的使用、自定义注解

本文详细介绍了Java注解的概述,包括其作用和常见用途。讲解了JDK提供的三个基本注解,并深入探讨了如何自定义注解及其使用方法。在使用注解时,特别提到了注解属性赋值的注意事项,如属性必须赋值、数组值的特殊处理以及默认值的设定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、注解的概述

        注解的概述:
              是一种代码级别的说明,和类与接口属于平级关系
              注解(Annotation):相当于一种标记,在程序中假如注解就等于为程序打上某种标记以后,Java编译器,开发工具和其他程序可以通过反射来了解类以及各种元素上有没有标记,看你的程序标记什么,就去做什么
      我们目前为止了解过的注解:
          1. @Override:子类重写父类方法的时候  编译的时候
          2.@FunctionalInterface:函数式接口   编译的时候
          3.#Test:JUnit测试的注解   编译的时候
注解用在“源码”中,作为一个标记
给【注解解析器】看的,告诉 注解解析器 怎么编译,怎么运行代码
在开发中,我们一般都使用的注解比较多一些

二、JDK提供的三个基本注解

public class Test {
    public static void main (String[] args) {
        /*
        *   JDK提供的三个基本注解
        *       1.@Override:描述方法的重写
        *       2.SuppressWarnings:压制/忽略警告
        *       3.Deprecated:标记过时
        * */
    }
}

@SuppressWarnings("注解")
class Fu{
    public void show1(){}
}

class Zi extends Fu{
    @Override
    public void show1 () {
        super.show1();
    }
}

        

三、自定义注解

public class Test {
    /*
    *   自定义注解
    *       格式:
    *           public @interface 接口名称{
    *               属性
    *           }
    *
    *   注解属性:
    *       数据类型 属性名();
    *   属性类型:
    *       1.基本数据类型
    *       2.String
    *       3.Class类型
    *       4.注解类型
    *       5.枚举类型
    *       6.以上类型的一维数组类型
    * */
    public static void main (String[] args) {
        //@MyAnnotation()
        int num;
    }
}
public @interface MyAnnotation {
    // 1.基本数据类型
    byte b();
    short s();
    int i();
    long l();
    char c();
    double d();
    float f();
    boolean flag();
    // 2.String
    String str();
    // 3.Class类型
    Class cl();
    // 4.注解类型
    Override my();
    // 5.枚举类型
    Color color();
    // 6.以上类型的一维数组类型
}

四、注解的使用

        注解的使用:
            不带属性的注解:@注解名称
            带属性的注解:@注解名称(属性名=属性值,属性名=属性值,...)
        注意:带属性的注解在使用的时候一定要给属性赋值,并且所有的属性都要赋值

        使用:

                先自定义两个注解,一个带属性,一个不带属性

public @interface MyAnnotation1 {
    /*
    *   带属性的注解
    * */
    String name();
    int age();
    String[] arr();
}
public @interface MyAnnotation2 {
}
@MyAnnotation1(name = "dkt",age = 18,arr = {"张三","李四"})
@MyAnnotation2
public class Test {
    public static void main (String[] args) {
        
    }
}

        

五、给注解属性赋值的注意事项

        给注解属性赋值的注意事项:
            1.一旦注解有属性了,使用注解的时候,属性必须有值
            2.若属性类型是一维数组的时候,并且数组的值只有一个的时候可以省略{}
            3.如果注解只有一个属性,并且属性名为value,那么使用注解给注解属性赋值的时候,注解属性名value就可以省略
            4.注解属性可以有默认值,格式:属性类型 属性名() default默认值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值