java @注解
时间: 2025-04-03 09:15:47 浏览: 31
### Java中`@注解`的使用方法及常见类型
#### 一、什么是注解?
注解(Annotation)是一种元数据形式,用于提供有关程序代码的信息。它们不直接影响代码本身的运行逻辑,而是为编译器或其他工具提供了额外的数据支持。
---
#### 二、常见的Java内置注解及其用途
1. **`@Override`**
- 用于标记重写的父类方法。
- 如果未正确实现继承关系中的覆盖行为,则会触发编译错误。
```java
@Override
public void display() {
System.out.println("This is overridden method");
}
```
2. **`@Deprecated`**
- 标记过时的方法或类,建议开发者不要再使用它。
- 编译器会在调用这些方法时发出警告。
```java
@Deprecated
public static void oldMethod() {
System.out.println("Use newMethod instead.");
}
```
3. **`@SuppressWarnings`**
- 抑制特定的编译器警告消息。
- 常见的应用场景包括抑制未经检查的转换警告等[^1]。
```java
@SuppressWarnings({"unchecked", "unused"})
public void test() {
List list = new ArrayList();
list.add(1);
}
```
---
#### 三、Spring框架中的常用注解
1. **`@PostConstruct`**
- 被标注的方法将在依赖注入完成后立即执行。
- 方法必须是非静态的,无参数且返回值为`void`,并且不会抛出已检查异常[^2][^4]。
```java
import javax.annotation.PostConstruct;
public class ExampleBean {
@PostConstruct
public void init() {
System.out.println("Executing post construct logic...");
}
}
```
2. **`@Param`**
- 主要用于MyBatis框架中绑定SQL查询参数到方法形参上[^4]。
```java
public interface UserDao {
@Select("SELECT * FROM users WHERE username=#{userName} AND password=#{password}")
User findUser(@Param("userName") String name, @Param("password") String pwd);
}
```
---
#### 四、自定义注解与元注解
1. **创建自定义注解**
自定义注解可以通过关键字`@interface`来定义,并可以设置属性和默认值。
```java
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface CustomAnnotation {
String value() default "";
int count() default 0;
}
public class AnnotationExample {
@CustomAnnotation(value = "Test Value", count = 5)
public void annotatedMethod() {}
}
```
2. **元注解的作用**
元注解是用来修饰其他注解的特殊注解,主要包括以下几种:
- **`@Retention`**: 定义注解的生命周期。
- `RetentionPolicy.SOURCE`: 注解仅存在于源码阶段,在编译时会被丢弃。
- `RetentionPolicy.CLASS`: 默认选项,默认保留至`.class`文件但在运行时不加载。
- `RetentionPolicy.RUNTIME`: 运行期间可通过反射访问。
- **`@Target`**: 指定注解适用的目标范围。
- 如`ElementType.TYPE_PARAMETER`允许注解放置在泛型声明处[^3]。
- **`@Inherited`**: 表明子类可以从父类继承该注解。
- **`@Repeatable`**: 支持同一位置多次应用相同的注解。
```java
@Repeatable(SecurityPolicies.class)
@Retention(RetentionPolicy.RUNTIME)
public @interface SecurityPolicy {
String role();
}
@SecurityPolicy(role = "admin")
@SecurityPolicy(role = "user")
public class SecureClass {}
```
---
#### 五、总结
通过上述介绍可以看出,Java中的注解不仅能够简化开发流程,还能增强代码的可读性和维护性。无论是标准库还是第三方框架(如Spring),都广泛采用了这一机制以提升功能扩展能力。
---
阅读全文
相关推荐


















