java注解 annotation

注解关键字[b]@interface[/b]

修饰注解的注解:
@Retention ,保持机制,保持策略有RUNTIME,CLASS,SOURCE。

@Target,限定注解生效的对象范围,使用ElementType枚举,值如下:

public enum ElementType{

TYPE; //适用class,interface,enum

FIELD; //适用field;

METHOD; //适用method

PARAMETER, //适用method上之parameter

CONSTRUCTOR, //适用constructor

LOCAL_VARIABLE, //适用局部变量

ANNOTATION_TYPE, //适用annotation型态

package //适用package

}


2.处理方法,从类到属性到方法,根据自己的定义的来处理
以下是一个处理的示例,AnTest类分别使用了我自定义的注解分别注解了类,属性和方法,分别对应注解TestClass,TestField,Test

AnTest antest=new AnTest();
Class myclass=antest.getClass();
//判断类
if(myclass.isAnnotationPresent(TestClass.class))
{
System.out.print("此类是TestClass注解的类:"+myclass.getName());
TestClass testClass=(TestClass) myclass.getAnnotation(TestClass.class);
System.out.println(",注解值:"+testClass.value());
}
//判断属性
Field[] fields=myclass.getDeclaredFields();
if(fields.length==0){
System.out.println("此类没有属性");
}else{
for(Field field:fields){
if(field.isAnnotationPresent(TestField.class)){
System.out.print("被注解的属性:"+field.getName());

TestField testField=field.getAnnotation(TestField.class);
System.out.println(",注解值:"+testField.value());
}
}
}
//判断方法
Method[] methods=myclass.getDeclaredMethods();
if(methods.length==0){
System.out.println("此类没有方法");
}
else{
for(Method method:methods)
{
if(method.isAnnotationPresent(Test.class))
{

System.out.print("被注解的方法名:"+method.getName());
Test test=method.getAnnotation(Test.class);
System.out.println(",注解值:"+test.value());
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值