Java面试题:什么是Java中的注解以及如何自定义注解?举例说明注解的经典用法

简介: Java面试题:什么是Java中的注解以及如何自定义注解?举例说明注解的经典用法

Java中的注解(Annotation)是JDK 5.0及以后版本引入的一种注释机制,用于为代码添加元数据。注解本身不会影响代码的执行,但可以通过反射等机制在运行时读取注解信息,从而改变代码的行为。注解是代码的一种元数据,可以为编译器、工具或其他应用程序提供信息。


自定义注解的步骤如下:

  1. 使用@interface关键字定义注解。
  2. 在注解中定义元素(相当于注解的属性),使用数据类型作为元素类型,并使用default为元素指定默认值。
  3. 注解可以定义在类、方法、字段、参数等上面。

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

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

// 定义一个名为MyAnnotation的注解
@Target(ElementType.METHOD) // 注解可以作用在方法上
@Retention(RetentionPolicy.RUNTIME) // 注解在运行时保留,可以通过反射获取
public @interface MyAnnotation {
    // 定义一个名为value的元素,默认为"Hello World"
    String value() default "Hello World";
}

注解的经典用法有很多,以下是一些例子:

  1. 标记注解:例如,Java自带的@Override注解,用于表示一个方法是重写了父类的方法。编译器会检查该方法是否确实重写了父类的方法,如果没有,则报错。
public class MyClass extends ParentClass {
    @Override
    public void myMethod() {
        // 方法体
    }
}
  1. 配置注解:例如,Spring框架中大量使用了注解进行配置,如@Autowired用于自动装配bean,@Service@Controller@Repository等用于标识bean的类型。
@Service
public class MyService {
    // ...
}
  1. 元数据注解:例如,Hibernate ORM框架使用注解来描述Java类与数据库表之间的映射关系。
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class MyEntity {
    @Id
    private Long id;
    // ...
}
  1. 自定义注解用于代码检查或生成:开发者可以根据需要自定义注解,并在编译时或运行时通过工具检查注解或根据注解生成代码。例如,可以使用自定义注解来标记需要进行特定处理的代码段,然后编写工具来扫描这些注解并执行相应的处理。

总之,注解为Java开发提供了更灵活、更强大的代码描述和配置能力,使得开发者可以更加高效地编写和维护代码。

相关文章
|
Java
在 Java 中捕获和处理自定义异常的代码示例
本文提供了一个 Java 代码示例,展示了如何捕获和处理自定义异常。通过创建自定义异常类并使用 try-catch 语句,可以更灵活地处理程序中的错误情况。
608 1
|
11月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
474 4
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
373 7
|
Java
在 Java 中,如何自定义`NumberFormatException`异常
在Java中,自定义`NumberFormatException`异常可以通过继承`IllegalArgumentException`类并重写其构造方法来实现。自定义异常类可以添加额外的错误信息或行为,以便更精确地处理特定的数字格式转换错误。
425 1
|
Java 数据库 C++
Java异常处理机制:try-catch、throws与自定义异常
本文深入解析Java异常处理机制,涵盖异常分类、try-catch-finally使用、throw与throws区别、自定义异常及最佳实践,助你写出更健壮、清晰的代码,提升Java编程能力。
|
XML 人工智能 Java
java通过自定义TraceId实现简单的链路追踪
本文介绍了如何在Spring Boot项目中通过SLF4J的MDC实现日志上下文traceId追踪。内容涵盖依赖配置、拦截器实现、网关与服务间调用的traceId传递、多线程环境下的上下文同步,以及logback日志格式配置。适用于小型微服务架构的链路追踪,便于排查复杂调用场景中的问题。
625 0
|
Java 编译器 开发者
注解的艺术:Java编程的高级定制
注解是Java编程中的高级特性,通过内置注解、自定义注解及注解处理器,可以实现代码的高度定制和扩展。通过理解和掌握注解的使用方法,开发者可以提高代码的可读性、可维护性和开发效率。在实际应用中,注解广泛用于框架开发、代码生成和配置管理等方面,展示了其强大的功能和灵活性。
381 25
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
16754 5
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
Java
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
617 34
|
Java 数据库连接 Maven
最新版 | SpringBoot3如何自定义starter(面试常考)
在Spring Boot中,starter是一种特殊的依赖,帮助开发人员快速引入和配置特定功能模块。自定义starter可以封装一组特定功能的依赖和配置,简化项目中的功能引入。其主要优点包括模块化、简化配置、提高代码复用性和实现特定功能。常见的应用场景有短信发送模块、AOP日志切面、分布式ID生成等。通过创建autoconfigure和starter两个Maven工程,并编写自动配置类及必要的配置文件,可以实现一个自定义starter。最后在测试项目中验证其有效性。这种方式使开发者能够更便捷地管理和维护代码,提升开发效率。
2336 1
最新版 | SpringBoot3如何自定义starter(面试常考)