您的位置:首页 > 编程语言 > Java开发

java注解annotation,自定义注解--shanchu

2015-08-06 15:55 567 查看
定义:

package com.dxz.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

//定义注解
@Target({ ElementType.TYPE, ElementType.FIELD, ElementType.METHOD,
ElementType.LOCAL_VARIABLE })
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
// 定义两个成员变量
String name() default "jack";

int age() default 22;
}


测试:

package com.dxz.annotation;

import java.lang.annotation.Annotation;

/*
* 获得注解信息要注意,当前注解一定要保留在RUNTIME
*
* 获得注解信息方法:
* 1.getAnnotations()
* 调用注解成员变量
* 1.假设注解对象ann,调用成员变量方式:ann.name();
* 2.与调用类方法类似
*/
public class TestAnnotationInfo {

public static void main(String[] args) {
TestAnnotationInfo tai = new TestAnnotationInfo();
try {
tai.getInfo();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
}
}

@MyAnnotation(name = "zhangxun", age = 20)
public void getInfo() throws NoSuchMethodException, SecurityException {
// 获取TestAnnotationInfo对象的getInfo()方法中包含的所有注解
@MyAnnotation
Annotation[] annos = TestAnnotationInfo.class.getMethod("getInfo")
.getAnnotations();
// 遍历annos数组
for (Annotation ann : annos) {
// ann就是一个Annotation 对象
// 判断当前ann是否是MyAnnotation注解类型
if (ann instanceof MyAnnotation) {
System.out.println(ann);
System.out.println(((MyAnnotation) ann).name());
System.out.println(((MyAnnotation) ann).age());
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: