package java1;
/**
* 注解的使用
* 1.理解Annotation
* ①JDK5.0中的新增功能
*
* ②Annotation其实就是代码里的特殊标记,增加一些补充信息
*
* ③在JavaEE/Android中占据了很重要的角色
*
* 2.Annotation的使用示例:
* 示例1:生成文档相关的注解
* 示例2:JDK内置的三个基本注解:
* @Override: 重写父类方法,且只能用于方法
* @deprecated: 表示所修饰的元素已经过时了
* @SuppressWarnings: 抑制编译器警告
*
* 示例3:跟踪代码依赖性,实现替代文件配置功能
*
* 3.如何自定义注解:参照suppresswarning去定义
* *1.注解声明为@interface
* *2.内部定义为成员,通常用value表示
* *3.可以指定成员的默认值,使用default来定义
* *4.如果自定义的注解没有成员,作标志作用
* 如果注解有成员,使用的时候需要赋值
* 自定义注解通常都会指明Retention和Target
* 4.JDK提供的四种元注解:
* 对现有注解解释说明的注解:
* Retention:指明修饰的annotation的生命周期:source,class,runtime(只有她可以通过反射获取)
* Target: 指定修饰的Annotation能够用来修饰哪些结构,哪些程序元素
* Documented:表示所修饰的注解在被javadoc解析时可以保留下来
* Inherited:表示所修饰的注解将具有继承性
*
* 5.通过反射获取注解信息---反射时讲解
*
* 6.JDK8中注解的新特性:可重复注解,类型注解
* 6.1可重复注解
* ①在myAnnotation上声明@Repeatable,成员值为MyAnnotations.class
* ②MyAnnotation的Target和Retention和MyAnnotations相同
* 6.2类型注解
* TYPE_PARAMETER表示可以写在类型变量的声明语句中,比如泛型声明
* TYPE_USE表示该注解能写在使用类型的任何语句中
*
*
*
* @author Baobao
* @create 2021-08-09 17:32
*/
public class AnnotationTest {
}
@MyAnno(value="hello")
class Person{
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person() {
}
public void walk(){
System.out.println("人走路");
}
public void eat(){
System.out.println("人吃饭");
}
}
interface Infom{
void show();
}
class Student extends Person implements Infom{
@Override
public void walk() {
System.out.println("学生走路");
}
@Override
public void show() {
}
}
package java1;
/**
* @author Baobao
* @create 2021-08-09 22:06
*/
public @interface MyAnno {
String value() default "hello";
}