一 Class是什么复习

Class是java类的说明书,通过反射或者hvm阅读该说明书,创建类的示例
image.png

二 说明书 annotation

2-1 定义

注解就是说明书中的一小段文本。可以携带参数,可以被扫描阅读。 只提供一小段信息,怎么处理被注解标注的东西,不是注解来管的

2-2 创建一个注解

2.2.1 代码

  1. public @interface SpringBootApplication {
  2. }
  3. // 使用
  4. @SpringBootApplication
  5. public class Node {
  6. Object value;
  7. Node next;
  8. public Node(Object value, Node next) {
  9. this.value = value;
  10. this.next = next;
  11. }
  12. public static void main(String[] args) {
  13. Node head = new Node(1, null);
  14. Node second = new Node(2, null);
  15. Node third = new Node(3, null);
  16. head.next = second;
  17. second.next = third;
  18. }
  19. }

2.2.2 元注解 标注在注解上面的注解

  1. import java.lang.annotation.ElementType;
  2. import java.lang.annotation.Retention;
  3. import java.lang.annotation.RetentionPolicy;
  4. import java.lang.annotation.Target;
  5. // 什么地方可以使用这个注解
  6. @Target({ElementType.TYPE, ElementType.CONSTRUCTOR})
  7. // 声明这个注解会不会被编译器丢弃
  8. @Retention(RetentionPolicy.CLASS)
  9. public @interface SpringBootApplication {
  10. }
  11. // 还有一些其他注解,不很重要

2.2.3 注解属性

  1. import java.lang.annotation.ElementType;
  2. import java.lang.annotation.Retention;
  3. import java.lang.annotation.RetentionPolicy;
  4. import java.lang.annotation.Target;
  5. // 什么地方可以使用这个注解
  6. @Target({ElementType.TYPE, ElementType.CONSTRUCTOR})
  7. // 声明这个注解会不会被编译器丢弃
  8. @Retention(RetentionPolicy.CLASS)
  9. public @interface SpringBootApplication {
  10. // 这里可以声明注解的属性
  11. String value() default "aaa";
  12. String[] description() default "aaa";
  13. }
  1. @SpringBootApplication(value = "ccc", description = {"aaa", "bbb"})
  2. public class Node {
  3. Object value;
  4. Node next;
  5. public Node(Object value, Node next) {
  6. this.value = value;
  7. this.next = next;
  8. }
  9. public static void main(String[] args) {
  10. Node head = new Node(1, null);
  11. Node second = new Node(2, null);
  12. Node third = new Node(3, null);
  13. head.next = second;
  14. second.next = third;
  15. }
  16. }