[1]定义自定义注解 Info , 注解拥有属性 String name和 String [] tags; [2] Info注解的target是TYPE,Retention是RUNTIME。 [3] 定义自定义注解 Organization , 拥有属性 String name和 int size; [4] Organization 注解的target和Retention与Info注解一 致。 [5]添加测试类Ex1,在类上方添加注解: 在每一个类中都有构造方法,构造方法就是用来创建这个类的对 象的。 构造方法的要求: 构造方法的方法名和类名完全一致。 构造方法没有返回值。也不能写void。 和访问修饰符无关,和参数无关。 @Info(name="卡卡西" ,tags={"复制忍者" , "六代火影"}) @Organization(name="木叶村" ,size=556) public class Ex1{ } [6]在Ex1中添加main方法实现下面的功能: ①获取Ex1类上方的所有注解,并且输出这些注解的toString ②分别获取Ex1 上方的Info和Organization注解,并且打印 这两个注解的所有属性。
时间: 2023-05-24 07:05:06 浏览: 136
1. 定义自定义注解 Info:
```java
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Info {
String name();
String[] tags();
}
```
2. 定义自定义注解 Organization:
```java
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Organization {
String name();
int size();
}
```
3. 在 Ex1 类上添加注解 Info 和 Organization:
```java
@Info(name="卡卡西", tags={"复制忍者", "六代火影"})
@Organization(name="木叶村", size=556)
public class Ex1 {
// 空构造方法,可以不写
public Ex1() {
}
}
```
4. 在 Ex1 类中添加 main 方法来测试注解:
```java
import java.lang.annotation.Annotation;
public class Main {
public static void main(String[] args) {
Class<Ex1> clazz = Ex1.class;
// 获取 Ex1 类上的所有注解
Annotation[] annotations = clazz.getAnnotations();
for (Annotation annotation : annotations) {
System.out.println(annotation.toString());
}
// 获取 Ex1 类上的 Info 和 Organization 注解
Info info = clazz.getAnnotation(Info.class);
System.out.println("Info - name: " + info.name() + ", tags: " + String.join(",", info.tags()));
Organization organization = clazz.getAnnotation(Organization.class);
System.out.println("Organization - name: " + organization.name() + ", size: " + organization.size());
}
}
```
输出结果为:
```
@Info(name=卡卡西, tags=[复制忍者, 六代火影])
@Organization(name=木叶村, size=556)
Info - name: 卡卡西, tags: 复制忍者,六代火影
Organization - name: 木叶村, size: 556
```
阅读全文