本文最后更新于 716 天前,其中的信息可能已经有所发展或是发生改变。
转自黑马程序员 代码地址
Override
】@Override
:检测被该注解标注的方法是否是继承自父类(接口)的@Deprecated
:该注解标注的内容,表示已过时@SuppressWarnings
:压制警告 @SuppressWarnings("all")
自定义注解
元注解
public @interface 注解名称{
属性列表;
}
javap
得到) public interface MyAnno extends java.lang.annotation.Annotation {}
在程序使用(解析)注解:获取注解中定义的属性值
获取注解定义的位置的对象 (Class,Method,Field)
获取指定的注解
getAnnotation(Class)
//其实就是在内存中生成了一个该注解接口的子类实现对象
public class ProImpl implements Pro{
public String className(){
return "cn.itcast.annotation.Demo1";
}
public String methodName(){
return "show";
}
}
调用注解中的抽象方法获取配置的属性值
@org.junit.jupiter.api.Test
public void testReflect() throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException {
Class<Test> testClass = Test.class;
MyAnno3 myAnno3 = testClass.getAnnotation(MyAnno3.class);
Class<?> clazz = Class.forName(myAnno3.className());
Method method = clazz.getMethod(myAnno3.methodName(),int.class,int.class);
method.invoke(clazz.newInstance(), 2,4);
}
判断方法上是否有Check注解
for (Method method : methods) {
//4.判断方法上是否有Check注解
if(method.isAnnotationPresent(Check.class)){