码迷,mamicode.com
首页 > 编程语言 > 详细

java注解annotation,自定义注解

时间:2015-08-06 16:34:38      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

定义:

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());
            }
        }
    }

}

 

java注解annotation,自定义注解

标签:

原文地址:http://www.cnblogs.com/duanxz/p/3752374.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!