标记注解,检查注解,运行时处理注解,案例代码
时间: 2023-06-22 17:23:38 浏览: 63
好的,下面是标记注解、检查注解和运行时处理注解的案例代码:
1. 标记注解
标记注解没有成员变量,仅用于标记某个元素,表示该元素具有特殊的含义。
```java
@Target(ElementType.TYPE) //指定注解的作用目标为类
@Retention(RetentionPolicy.RUNTIME) //指定注解的生命周期为运行时
public @interface MyAnnotation {
//该注解没有成员变量
}
```
使用该注解标记一个类:
```java
@MyAnnotation //使用MyAnnotation注解标记该类
public class MyClass {
//类体
}
```
2. 检查注解
检查注解可以在编译时对代码进行静态检查,以发现一些潜在的问题。
```java
@Target(ElementType.METHOD) //指定注解的作用目标为方法
@Retention(RetentionPolicy.RUNTIME) //指定注解的生命周期为运行时
public @interface MyAnnotation {
//该注解没有成员变量
}
```
使用该注解标记一个方法:
```java
public class MyClass {
@MyAnnotation //使用MyAnnotation注解标记该方法
public void myMethod() {
//方法体
}
}
```
在编译时,编译器会给出MyAnnotation注解标记的方法的警告信息。
3. 运行时处理注解
运行时处理注解可以在程序运行时对注解进行解析和处理,以实现某些特定的功能。
```java
@Target(ElementType.FIELD) //指定注解的作用目标为字段
@Retention(RetentionPolicy.RUNTIME) //指定注解的生命周期为运行时
public @interface MyAnnotation {
String value() default ""; //定义一个名为value的成员变量
}
```
使用该注解标记一个字段:
```java
public class MyClass {
@MyAnnotation("hello world") //使用MyAnnotation注解标记该字段
private String myField;
}
```
在程序运行时,可以使用反射机制获取MyAnnotation注解,并从中读取value属性的值:
```java
public class Test {
public static void main(String[] args) throws Exception {
MyClass obj = new MyClass();
Field field = obj.getClass().getDeclaredField("myField");
MyAnnotation annotation = field.getAnnotation(MyAnnotation.class);
System.out.println(annotation.value()); //输出"hello world"
}
}
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)