首页 > 编程语言 >Java:注解

Java:注解

时间:2024-04-02 09:00:10浏览次数:32  
标签:Java 代码 编译器 注解 可以 运行

Java中的注解(Annotations)是一种用于提供元数据的特殊接口,它们可以被用于给代码添加信息,而这些信息可以在编译时、类加载时或运行时被读取,并且可以影响程序的行为。注解不会直接影响程序的逻辑,但它们可以被编译器或运行时环境用来生成额外的代码、进行类型检查或者在运行时进行处理。

基本特性

  1. 元数据:注解允许开发者定义和存储关于程序的元数据。
  2. 编译器检查:编译器可以利用注解进行类型检查,确保代码的正确性。
  3. 运行时处理:某些注解可以在程序运行时被读取和处理,例如用于配置框架的行为。
  4. 非侵入式:使用注解不会改变方法、类或字段的逻辑。

内置注解

Java提供了一些内置注解,这些注解具有特定的语义,并且对编译器和运行时环境有特殊的意义。以下是一些常用的内置注解:

  • @Override:指示某个方法覆盖了超类中的方法。
  • @Deprecated:标记不再推荐使用的类、方法或字段,表示它们可能在将来的版本中被移除。
  • @SuppressWarnings:指示编译器忽略特定的警告信息。
  • @SafeVarargs:用于抑制与可变参数类型的操作相关的警告。

自定义注解

除了使用内置注解,开发者还可以创建自己的注解来提供额外的信息。自定义注解的创建需要遵循以下规则:

  1. 注解的声明以@interface开始。
  2. 注解成员通常是方法,这些方法默认为public abstract
  3. 注解成员的默认值为false,除非显式指定。
  4. 注解可以有元素值对,也可以没有,后者称为标记注解。

下面是一个自定义注解的例子:

public @interface MyAnnotation {
    String value() default "default value";
}

注解的保留策略

注解可以指定保留策略,这决定了注解在哪个级别可用:

  • RetentionentionPolicy.SOURCE:注解只在源码中保留,编译时会被忽略。
  • RetentionentionPolicy.CLASS:注解在编译时被保留,但在运行时不可用。
  • RetentionentionPolicy.RUNTIME:注解在运行时可用,需要使用反射来访问。

处理器和框架

注解的强大之处在于它们可以与注解处理器(Annotation Processor)配合使用。注解处理器是在编译时运行的程序,它们可以读取注解信息并生成代码、报错或其他元数据。

例如,Java Persistence API (JPA) 使用注解来描述实体和数据库之间的映射关系,注解处理器会根据这些注解生成用于访问数据库的代码。

总结

注解是Java语言的一个重要特性,它们提供了一种灵活的方式来添加元数据,这些元数据可以用于编译器检查、运行时配置或代码生成。通过理解和使用注解,你可以编写更加清晰、灵活和可维护的代码。

标签:Java,代码,编译器,注解,可以,运行
From: https://blog.csdn.net/m0_65888394/article/details/137231810

相关文章

  • 学习java第三十天
    Spring容器扩展机制IoC容器负责管理容器中所有bean的生命周期,而在bean生命周期的不同阶段,Spring提供了不同的扩展点来改变bean的命运。在容器的启动阶段,BeanFactoryPostProcessor允许我们在容器实例化相应对象之前,对注册到容器的BeanDefinition所保存的信息做一些额外的操作,比......
  • 【华为OD机试真题】A卷-优秀学员统计(JAVA)
    一、题目描述【华为OD机试真题】A卷-优秀学员统计(JAVA)题目描述:公司某部门软件教导团正在组织新员工每日打卡学习活动,他们开展这项学习活动已经一个月了,所以想统计下这个月优秀的打卡员工。每个员工会对应一个id,每天的打卡记录记录当天打卡员工的id集合,一共30天。请你实现......
  • 【华为OD机试真题】A卷-预定酒店(JAVA)
    一、题目描述【华为OD机试真题】A卷-预定酒店(JAVA)题目描述:放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店(n>=k>0),并由低到高打印酒店的价格二、输入输出输入描述:第一行:n,k,x......
  • java基础
                    ......
  • GitHub上标星120k的Java进阶面试教程等!(建议收藏
    转发+关注,然后私信回复关键字“888”即可获得我精心整理的《Java开源项目合集》资料八、《JavaFamily》==============【互联网一线大厂面试+学习指南】进阶知识完全扫官。 部分目录:九、《interview_internal_reference》==================================2......
  • @ComponentScan注解 -【Spring底层原理
    案例已上传GitHub,欢迎star:https://github.com/oneStarLR/spring-annotation一、注解用法1.背景知识什么是组件?组件也是抽象的概念,可以理解为一些符合某种规范的类组合在一起就构成了组件,他可以提供某些特定的功能,但实际他们都是类,只不过有他们特殊的规定。组件......
  • 2024最新分享我的面经总结:Java面试技术点攻略(九大核心专题
    关于操作系统这一部分,其实问的内容并不多,主要是因为这一部分问来问去也都是那么几个同样的问题,例如线程通信,线程与进程区别,进程调度算法以及虚拟内存、物理内存等。所以,在这一方面,我也整理了一些相对核心的内容。核心三:MySQL=========MySQL就更不用多说了,数据库不问......
  • Java中的信号量Semaphore
    引言:        在Java编程中,信号量Semaphore是一种重要的同步工具,用于控制对共享资源的访问。本文将详细介绍信号量Semaphore的概念、用法以及一些示例。一、什么是信号量Semaphore?        信号量Semaphore是一种用于控制多个线程访问共享资源的同步工具。......
  • Hadoop——HDFS文件系统的Java API操作
    2.7.4org.apache.hadoophadoop-hdfs2.7.4org.apache.hadoophadoop-client2.7.4junitjunit4.12IDEA会自动保存文件并且导入依赖包,点击右侧的Maven,展开Dependencies,可以看到四个依赖包以及导入进来了三、初始化我们通过junit来进行测试,首先创建一个类,添加如下内......
  • 2024JAVA互联网各大BATJ大厂(网易、华为
    ​为什么报了这个部门?​你觉得自己有什么优势,能给这个部门带来什么?​讲自己的三个优点?​说一下自己的不足?​。。。今日头条(抖音,收到意向书)​牛客网视频平台面试,算法题在线编程一下午走完三面流程。不涉及部门面试,面试官说三轮面试都是统招的。​一面(约......