一.注解概述及常用注解
概念:注解可以理解为一种使用相关信息来绑定Java文件元素的方式
常用的注解:共有四个
1.@Override方法重写的检查,所有的类都是继承Object类,toString重写
重写检查不正确时出现红色波浪线,长用于接口方法的重写*
2.@Deprecated标注已过时的方法,Date类中许多过时的方法都有横线标注
可查看Api文档得知过时的方法上面有@Deprecated
3. @SuppressWarnings(“all”)压制警告,可以去除编译时的警告,通常写在类上面,也可以只作用方法
4.@FunctionalInterface : 表示函数式接口,函数式接口中只能有一个抽象方法
public class Anno {
Override
public String toString() {
return "Anno{}";
}
@Deprecated
public void show1(){
}
public void show2(){
}
public void demo(){
show1();
}
}
@FunctionalInterface
interface MyFunction{
void show3();
}
二、自定义注解格式及注意事项
自定义注解格式:
- 格式:
元注解 -
public @interface 注解名称{}****
*============================
-
@Override的示例:
-
@Target({ElementType.METHOD})
-
@Retention(RetentionPolicy.SOURCE)
-
public @interface Override {
-
}
-
注解的本质实际上是接口
-
public interface MyAnnotation extends java.lang.annotation.Annotation{}
-
注解中的属性就是方法接口中的方法,通常用能够理解的名称定义方法
-
只能定义这几种属性,添加以外的数据类型会报错
-
常用基本数据类型
-
String类型
-
枚举类型
-
注解类型
-
以上类型的数组
-
注解中有多少属性就必须添加多少属性,添加了default后可不添加会保持默认属性
各种类型添加方式:
@MyAnnotation(age=0,enum1=Enum.p1,Annotation = @MyAnnotation2,strs={"aa","bcc"})
class MyAnnotationText{
}
三、元注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @Target: 描述注解能够作用的位置
* @Retention: 描述注解保留的阶段
* 1.RetentionPolicy.RUNTIME
* 当前被描述的注解,会保留到class字节码文件中,并被JVM读取到
* 2.RetentionPolicy.CLASS
* 当前被描述的注解,会保留到class字节码文件中
* 3.RetentionPolicy.SOURCE
* 当前被描述的注解,只会保留在编译阶段
* @Documented: 描述注解是否被抽取到api文档中
* @Inherited: 描述注解是否被子类继承
*/
/*
ElementType.TYPE 只能作用在类名上
ElementType.METHOD 只能作用于方法上
ElementType.FIELD 只能作用于成员变量上
*/
@Target({ElementType.TYPE,ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface yuan {
}
@yuan
class yunaText{
@yuan
int age;
@yuan
public void show1(){}
}
**java反射的好处:**https://blog.csdn.net/c3476741954/article/details/105150738