注解
(1)定义:Java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法。JDK1.5引入;
(2)学习目的:理解常用框架、使代码清晰
(3)Java提供常用自带注解@Override @Deprecated@Suppvisewarning;
(4)常见第三方注解:Spring
(5)代码实战
package com.czh.studyday10.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 自定义注解,整体格式
* @author J_X
*
*/
//注解作用范围:例如此例中是作用于方法
@Target(ElementType.METHOD)
//注解作用时刻:当前作用于代码运行时刻
@Retention(RetentionPolicy.RUNTIME)
//注解是否允许从父类注解延续到子类上,目前只对类的注解有效果
@Inherited
//允许生成javadoc文档包含此注解信息
@Documented
public @interface MyAnnotation {
//1、参数不是必须的,可以没有,例如:上面的Documented
//2、注解里面只有一个值默认名字为values,每个值都可以通过default关键字给他设定默认值
//3、对参数值得方法的要求:无参数无异常抛出
String value() default "annotation";
}
使用:
@MyAnnotation("hehe")
private int testReflect(int a)
{
return -a;
}
反射调用:
try {
Method m = type3.getDeclaredMethod("testReflect", int.class);
m.setAccessible(true);
MyAnnotation testAnnotation = m.getAnnotation(MyAnnotation.class);
System.err.println(testAnnotation.value()+" getMoney = "+ m.invoke(type3.newInstance(), 10).toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}