注释方法
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//元注解(添加元注解后isAnnotationPresent能判断ZSTest是可用的(表面))
//javac编译器编译
// source retetionPolicy runtime
//注解的3个阶段 元文件 --- 类文件 --- 内存中的字节码 (保存的几个时间点)
//设置保留的阶段
@Retention(RetentionPolicy.RUNTIME)
//设置放在哪
@Target({ElementType.TYPE,ElementType.METHOD})
public @interface ZSFather {
public String sysout();
public String aac();
//不能重载
// public String sysout(String str1,String str2);
//注释类不能无返回值
//public void sysout2();
//为什么不可用
// public HashMap rtnMap();
// public List rtnMap();
}
子类调用父类
@ZSFather(aac = "", sysout = "")
public class ZSTest {
//Override 重写的关键词
public String sysout(){
return null;
}
public static void main(String[] args) {
System.out.println(ZSTest.class.isAnnotationPresent(ZSFather.class));
if(ZSTest.class.isAnnotationPresent(ZSFather.class)){
//利用反射机制接受zsFather,getAnnotation获取注释信息
ZSFather zsFather = (ZSFather) ZSFather.class.getAnnotation(ZSFather.class);
}
}
}
现在需要渐渐理解注释的意义,今天又做了一些测试找了些文档,@interface的注释与interface并不一样,其更像是定义一个属性,而且定义这些方法的返回值是8个基本数据类型与String类型与其他们的数组类型。