前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Annotation注解

Annotation注解

原创
作者头像
玖叁叁
发布2023-05-11 11:35:31
2520
发布2023-05-11 11:35:31
举报
文章被收录于专栏:玖叁叁玖叁叁

Java的注解(Annotation)是一种在代码中添加元数据(metadata)的方式,可以提供一些额外的信息和指示给编译器、运行时或者其他工具。注解可以用来简化代码、增强代码的可读性和可维护性,并且能够减少开发人员在编写代码时的出错率。

注解的概念

注解是一种用于描述类、方法、字段等程序元素的元数据。Java中的注解以@符号开头,放在程序元素的声明之前,例如:

代码语言:javascript
复制
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    String value();
}

这段代码定义了一个注解@MyAnnotation,该注解可以用于类、接口、枚举等程序元素上,并且包含一个value属性。

注解的使用方法

注解的使用方法分为三个步骤:定义注解、使用注解和处理注解。下面将分别介绍这三个步骤。

1.定义注解

定义注解时需要使用关键字@interface,注解中可以包含成员变量、方法等元素。注解的成员变量可以是基本类型、枚举、字符串、注解等类型,注解的方法必须以无参数和无异常的方式声明。例如:

代码语言:javascript
复制
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    String name();
    String description() default "no description";
    int priority() default 0;
}

上述代码定义了一个注解@MyAnnotation,包含三个成员变量name、description和priority,并且description和priority都设置了默认值。

2.使用注解

使用注解时需要将注解放置在目标程序元素的前面,例如:

代码语言:javascript
复制
@MyAnnotation(name = "doSomething", priority = 1)
public void doSomething() {
    System.out.println("do something...");
}

在上述代码中,@MyAnnotation注解被放置在doSomething()方法的前面,其中name属性的值为“doSomething”,priority属性的值为1。

3.处理注解

在Java中,可以使用反射机制来处理注解。使用注解处理器可以在程序运行时获取注解信息,并根据注解信息来执行相应的操作。例如:

代码语言:javascript
复制
Method method = obj.getClass().getMethod("doSomething");
MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
if (annotation != null) {
    String name = annotation.name();
    int priority = annotation.priority();
    // do something with annotation information
}

在上述代码中,使用反射机制获取了doSomething()方法上的@MyAnnotation注解,并获取了该注解的name和priority属性的值。

注解的示例

下面将给出几个注解的示例,包括Java内置的注解和自定义注解。

Override注解

Java内置的Override注解用于标记一个方法覆盖了父类中的方法,可以帮助开发人员在编写程序时发现重写错误。例如:

代码语言:javascript
复制
class Parent {
    public void doSomething() {
        System.out.println("parent do something");
    }
}

class Child extends Parent {
    @Override
    public void doSomething() {
        System.out.println("child do something");
    }
}

在上述代码中,Child类重写了Parent类中的doSomething()方法,并使用了@Override注解来标记该方法的重写。

Deprecated注解

Java内置的Deprecated注解用于标记一个程序元素已经过时,建议不再使用。例如:

代码语言:javascript
复制
@Deprecated
public class OldClass {
    // old class implementation
}

在上述代码中,OldClass类被标记为已过时,不建议再使用。

SuppressWarnings注解

Java内置的SuppressWarnings注解用于忽略指定类型的警告信息。例如:

代码语言:javascript
复制
@SuppressWarnings("unchecked")
List<String> list = new ArrayList();

在上述代码中,使用@SuppressWarnings注解来忽略类型转换的警告信息。

自定义注解

自定义注解可以根据具体需求定义不同的注解,例如:

代码语言:javascript
复制
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Author {
    String name();
    String email() default "no email";
    String[] tags();
}

上述代码定义了一个自定义注解@Author,该注解可以用于方法上,并包含三个成员变量name、email和tags。其中email成员变量设置了默认值“no email”,tags成员变量是一个字符串数组。

代码语言:javascript
复制
@Author(name = "John", email = "john@example.com", tags = {"java", "annotation"})
public void doSomething() {
    System.out.println("do something...");
}

在上述代码中,@Author注解被放置在doSomething()方法的前面,并设置了name、email和tags属性的值。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 注解的概念
  • 注解的使用方法
    • 1.定义注解
      • 2.使用注解
        • 3.处理注解
        • 注解的示例
          • Override注解
            • Deprecated注解
              • SuppressWarnings注解
                • 自定义注解
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档