框架=注解 + 反射 + 设计模式
P505 枚举类与注解-Annotation的使用示例 P506 枚举类与注解-JDK内置的三个基本注解package com.commonClass;
import java.util.ArrayList;
import java.util.Date;
public class AnnotationTest {
public static void main(String[] args) {
Person1 p = new Student();
p.walk();
Date date = new Date(2020, 10, 11);
System.out.println(date);
@SuppressWarnings("unused")
int num = 10;
// System.out.println(num);
@SuppressWarnings({"unused", "rawtypes"})
ArrayList list = new ArrayList();
}
}
class Person1{
private String name;
private int age;
public Person1() {
}
public Person1(String name, int age){
this.name = name;
this.age = age;
}
public void walk(){
System.out.println("人走路");
}
public void eat(){
System.out.println("人吃饭");
}
}
interface Info1{
void show();
}
class Student extends Person1 implements Info1{
@Override
public void walk() {
System.out.println("学生走路");
}
@Override
// 不加重写注解,在编译时就会忽略一些错误
public void show() {
}
}
P507 枚举类与注解-如何自定义注解
// 自定义注解:参照@SuppressWarnings
package com.commonClass;
public @interface MyAnnotation {
// 注解声明为interface
// 内部定义成员,通常使用value表示
// 可以指定成员的默认值,使用default定义
// 如果自定义注解没有成员,表明是一个标识
// 如果注解有成员,在使用注解时,需要指明成员值
// 自定义注解必须配上注解的信息处理流程(使用反射)才有意义。
String value() default "Hello";
}
P508 枚举类与注解-jdk中4个基本的元注解的使用1
// 注解的注解就是元注解 // Retention 指定所修饰的Annotation的生命周期 // TargetDocumentedInheritedP509 枚举类与注解-jdk中4个基本的元注解的使用2
自定义注解一般会使用Retention和Target
// Target 用于指定被修饰的Annotation能用于修饰哪些程序元素 // Documented 表示所修饰的注解被javadoc解析时被保留下来 // Inherited 被它所修饰的注解将具有继承性
通过反射获取注解
P510 枚举类与注解-JDK8新特性可重复注解@RepeatableP511 枚举类与注解-JDK8新特性类型注解
// ElementType.TYPE_PARAMETER 表示该注解能写在类型变量的声明语句中 // ElementType.TYPE_USE 表示该注解能写在使用类型的任何语句中P512 枚举类与注解-可重复注解中元注解不一致的问题解决



