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开发提供了更灵活、更强大的代码描述和配置能力,使得开发者可以更加高效地编写和维护代码。

相关文章
|
7月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
7月前
|
算法 Java
50道java基础面试题
50道java基础面试题
|
9月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
393 3
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
9月前
|
缓存 Java 关系型数据库
Java 面试经验总结与最新 BAT 面试资料整理含核心考点的 Java 面试经验及最新 BAT 面试资料
本文汇总了Java面试经验与BAT等大厂常见面试考点,涵盖心态准备、简历优化、面试技巧及Java基础、多线程、JVM、数据库、框架等核心技术点,并附实际代码示例,助力高效备战Java面试。
346 0
|
9月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
953 0
|
9月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
598 0
|
6月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
295 1
|
6月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
317 1
|
7月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案