首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
java面试题基础
冒泡排序算法
插入排序算法
归并排序算法
二叉树排序算法
基数排序
选择排序
堆排序
快排
TCP-三次握手
HTTP协议
WebSocket
Mysql架构
Innodb与Myisam数据库引擎
事务隔离级别
面向对象(OOP)
异常
泛型
Object
StringBuilder
代理
注解
java面试题基础二
HashMap
ConcurrentHashMap
BlockingQueue
线程
Volatile
AtomicInteger
Synchronized
Java虚拟机架构
类加载器
内存模型
垃圾回收
Mybatis面试题
IOC
高并发系统设计
分布式缓存
分布式锁
分布式事务
消息队列
当前位置:
首页>>
技术小册>>
Java面试指南
小册名称:Java面试指南
### Java中的注解介绍 Java注解是Java语言中的一种元数据,它们可以用来提供程序中的额外信息,使得程序的代码结构更加清晰和易于理解。注解本质上是Java中的一种接口,它可以用来标记类、方法、变量、参数等元素。 Java中的注解主要有三种类型:预定义注解、元注解和自定义注解。 **预定义注解** Java语言提供了一些预定义注解,它们在Java标准库中被广泛使用,用于描述类、方法、变量、参数等元素的属性和约束条件。常见的预定义注解包括: - @Override:用于标记方法覆盖父类方法; - @Deprecated:用于标记已经过时的方法或类; - @SuppressWarnings:用于抑制编译器警告信息; - @FunctionalInterface:用于标记函数式接口; ... 以下是一个使用预定义注解的示例代码: ```java public class Test { @Deprecated public void oldMethod() { // ... } @SuppressWarnings("unchecked") public void uncheckedMethod() { List list = new ArrayList(); // ... } public static void main(String[] args) { new Test().oldMethod(); new Test().uncheckedMethod(); } } ``` **元注解** 元注解是用于定义注解的注解,它们可以用来控制注解的作用范围、生命周期等属性。Java语言提供了四种元注解: - @Retention:指定注解的生命周期; - @Target:指定注解的作用目标; - @Inherited:指定注解是否可以被继承; - @Documented:指定注解是否需要包含在JavaDoc文档中。 以下是一个使用元注解的示例代码: ```java @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface TestAnnotation { String value() default "default"; } public class Test { @TestAnnotation(value = "test") public void testMethod() { // ... } public static void main(String[] args) throws NoSuchMethodException { Method method = Test.class.getMethod("testMethod"); TestAnnotation annotation = method.getAnnotation(TestAnnotation.class); System.out.println(annotation.value()); } } ``` **自定义注解** Java语言允许用户自定义注解,用户可以根据需要定义自己的注解,并将其应用于程序中的各个元素。自定义注解需要使用@interface关键字进行定义,注解的属性可以使用默认值,或者在定义注解时指定。 以下是一个使用自定义注解的示例代码: ```java import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MyAnnotation { String value() default ""; int count() default 1; } public class MyClass { @MyAnnotation(value = "hello", count = 2) public void myMethod() { System.out.println("Hello, World!"); } public static void main(String[] args) throws NoSuchMethodException { MyClass myClass = new MyClass(); Method method = myClass.getClass().getMethod("myMethod"); MyAnnotation annotation = method.getAnnotation(MyAnnotation.class); System.out.println("value = " + annotation.value()); System.out.println("count = " + annotation.count()); } } ``` 在这个示例中,我们定义了一个名为MyAnnotation的自定义注解,并在注解中定义了两个属性:value和count。注解中的属性可以使用默认值,也可以在使用注解时指定具体的值。 在MyClass类中,我们使用@MyAnnotation注解标记了myMethod方法,并在注解中指定了value和count属性的值。在main方法中,我们使用Java反射机制获取了myMethod方法,并通过getAnnotation方法获取了@MyAnnotation注解的实例。最后,我们打印出了注解中的属性值。 需要注意的是,自定义注解的属性必须是基本类型、String类型、Class类型、枚举类型、注解类型或者这些类型的数组。如果注解中有方法没有默认值,那么在使用注解时必须指定该方法的值。如果注解中的所有方法都有默认值,那么在使用注解时可以不指定任何属性值
上一篇:
代理
下一篇:
java面试题基础二
该分类下的相关小册推荐:
深入拆解 Java 虚拟机
Mybatis合辑4-Mybatis缓存机制
Java语言基础1-基础知识
Java语言基础5-面向对象初级
SpringBoot零基础到实战
深入理解Java虚拟机
Java语言基础12-网络编程
Java必知必会-Maven高级
Java语言基础13-类的加载和反射
Mybatis合辑3-Mybatis动态SQL
Java高并发秒杀入门与实战
Java语言基础2-运算符