欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > Java-注解

Java-注解

2025/5/9 3:43:47 来源:https://blog.csdn.net/qq_35010942/article/details/144569399  浏览:    关键词:Java-注解

Java 注解(Annotation)是一种用于在 Java 代码中附加元数据的机制。注解本身不会改变程序的行为,但可以被编译器、开发工具、运行时环境等进行处理,从而影响程序的编译过程、文档生成、运行时行为等。

1. 注解的基本定义

注解是一种以 @ 符号开头的标记,后跟注解的名称和可选的参数。比如:

@Override
public String toString() {return "Example";
}

@Override 是一个常见的注解,它表示该方法是重写父类方法的。

2. 常见的 Java 注解

Java 提供了几种内置的注解,常见的包括:

  • @Override: 表示方法重写了父类的方法。
  • @Deprecated: 表示该方法、类或字段不推荐使用。
  • @SuppressWarnings: 用于抑制编译器的警告信息。
  • @FunctionalInterface: 用于声明一个接口是函数式接口,即该接口只包含一个抽象方法。

3. 自定义注解

开发者也可以根据需要自定义注解。自定义注解的基本语法如下:

public @interface MyAnnotation {String value() default "default value";  // 定义一个默认值
}

使用自定义注解的示例:

@MyAnnotation(value = "Hello")
public void someMethod() {// 方法体
}

4. 注解的使用方式

  • 编译时处理(编译时注解):通过编译器检查注解(例如 @Override),如果注解使用不当,编译器会产生警告或错误。
  • 运行时处理(运行时注解):通过反射机制读取注解并根据注解的值执行相关逻辑。例如,在 Spring 框架中,@Autowired 注解用于自动注入依赖对象。

5. 注解的元注解

元注解是用于注解其他注解的注解。Java 提供了几种常用的元注解:

  • @Retention: 指定注解的生命周期,可以是 SOURCE(源码阶段)、CLASS(编译阶段)、RUNTIME(运行时阶段)。
  • @Target: 指定注解的作用范围,例如方法、类、字段等。
  • @Documented: 表示注解会被 javadoc 工具生成文档。
  • @Inherited: 表示注解可以被子类继承。

6. 注解与反射

通过反射机制,Java 程序可以在运行时获取类、方法、字段等的注解信息。示例代码如下:

import java.lang.annotation.*;@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@interface MyCustomAnnotation {String value();
}class Test {@MyCustomAnnotation(value = "Test Method")public void myMethod() {// 方法体}
}public class Main {public static void main(String[] args) throws Exception {Test test = new Test();for (var method : test.getClass().getDeclaredMethods()) {if (method.isAnnotationPresent(MyCustomAnnotation.class)) {MyCustomAnnotation annotation = method.getAnnotation(MyCustomAnnotation.class);System.out.println("Method " + method.getName() + " has annotation: " + annotation.value());}}}
}

输出:

Method myMethod has annotation: Test Method

总结

Java 注解是一种元数据机制,允许你在代码中附加描述性信息,这些信息可以在编译时、类加载时、运行时由工具或框架进行处理。注解广泛应用于框架(如 Spring、Hibernate)中,帮助简化代码、实现功能自动化。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词