注解的基本使用

本文介绍了Java注解的基本概念和用法,包括自定义注解、JDK的元注解以及如何通过反射获取注解属性值。注解用于替代配置文件,提供代码说明,如@Override、@Deprecated和@SuppressWarnings。通过@Retention和@Target可以控制注解的生命周期和使用位置。
摘要由CSDN通过智能技术生成

注解(Annotation)其实就是代码里的特殊标记, 它用于替代配置文件,也就是说,传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行。在Java技术里注解的典型应用是:可以通过反射技术去得到类里面的注解,以决定怎么去运行类

注释(Comment):给代码添加说明和解释,注释帮助开发人员理解程序。
注解(Annotation):给代码添加说明,这个说明给程序使用。

三个基本的 Annotation:

  • @Override:限定重写父类方法, 该注解只能用于方法
  • @Deprecated:用于表示某个程序元素(类, 方法等)已过时
  • @SuppressWarnings:抑制编译器警告

自定义注解

定义新的 Annotation 类型使用@interface关键字。
注意:自定义注解的时候,名称不能重复,注解影响整个项目

注解属性的类型

  • String类型
  • 基本数据类型
  • Class类型
  • 枚举类型
  • 注解类型
  • 以上类型的一维数组
//Student注解
public @interface Student {
   
    String[] name();	//可以是数组
}

//Gender枚举
public enum Gender {
   
    BOY, Girl;
}

//Person注解
public @interface Person {
   
    String name() default "";   //default是默认值
    int age() default 30;	//默认是有public修饰的,不能有其他修饰符
    Class<?> cls();
    Gender gender() default Gender.BOY; //枚举
    Student stu(); //注解
}

JDK的元注解

元Annotation指修饰注解的Annotation。

元注解的分类

  1. @Retention: 只能用于修饰一个 Annotation 定义, 用于指定该 Annotat
Java中的自定义注解是用于定义自己的注解类型,它们可以用于声明在类、方法、变量等代码元素上。自定义注解基本使用方法包括以下几个步骤: 1. 定义注解类型:使用 `@interface` 关键字定义一个新的注解接口。注解接口中可以定义成员变量,这些成员变量的默认值可以通过 `default` 关键字指定。 ```java public @interface MyAnnotation { String value() default "Default Value"; int number() default 0; } ``` 2. 应用注解:将自定义的注解应用到类、方法或字段等代码元素上。 ```java @MyAnnotation(value = "Example", number = 10) public class MyClass { @MyAnnotation(value = "Field", number = 20) private String myField; @MyAnnotation(value = "Method", number = 30) public void myMethod() { } } ``` 3. 处理注解注解本身不会对代码的行为产生影响,除非通过反射机制来读取这些注解。可以使用 `java.lang.reflect` 包中的类,如 `AnnotatedElement` 接口的实现类(`Class`、`Method`、`Field` 等),结合 `getAnnotation` 或 `getAnnotations` 方法来获取注解实例。 ```java import java.lang.reflect.Field; import java.lang.reflect.Method; public class AnnotationProcessor { public static void processAnnotations(Class<?> clazz) { // 检查类注解 MyAnnotation classAnnotation = (MyAnnotation) clazz.getAnnotation(MyAnnotation.class); if (classAnnotation != null) { System.out.println("Class annotation value: " + classAnnotation.value()); } // 遍历类中的字段 for (Field field : clazz.getDeclaredFields()) { MyAnnotation fieldAnnotation = field.getAnnotation(MyAnnotation.class); if (fieldAnnotation != null) { System.out.println("Field annotation value: " + fieldAnnotation.value()); } } // 遍历类中的方法 for (Method method : clazz.getDeclaredMethods()) { MyAnnotation methodAnnotation = method.getAnnotation(MyAnnotation.class); if (methodAnnotation != null) { System.out.println("Method annotation value: " + methodAnnotation.value()); } } } } ``` 4. 元注解:在定义注解时,可以使用一些预定义的注解来提供额外的元数据信息。例如 `@Retention` 指定注解的保留策略,`@Target` 指定注解可以应用的元素类型等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值