首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

java惯用annotation

2012-07-04 
java常用annotation@Override:用在方法之上,用来告诉别人这一个方法是改写父类的@Deprecated:建议别人不要

java常用annotation

@Override:用在方法之上,用来告诉别人这一个方法是改写父类的

@Deprecated:建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上.?

@SuppressWarnings:暂时把一些警告信息消息关闭

?

设计一个自己的Annotation

只有一个参数的Annotation实现

import?java.lang.annotation.Documented;

import?java.lang.annotation.ElementType;

import?java.lang.annotation.Retention;

import?java.lang.annotation.RetentionPolicy;

import?java.lang.annotation.Target;

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

@Documented

public?@interface?MyAnnotation1?{

????????String?value();

}

?

有两个参数的Annotation实现

package?chb.test.annotation;

import?java.lang.annotation.Documented;

import?java.lang.annotation.ElementType;

import?java.lang.annotation.Retention;

import?java.lang.annotation.RetentionPolicy;

import?java.lang.annotation.Target;

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

@Documented

public?@interface?MyAnnotation2?{

????????String?description();

????????boolean?isAnnotation();

}

?

Annotation实验类

@MyAnnotation1("this?is?annotation1")

public?class?AnnotationDemo?{

????????@MyAnnotation2(description="this?is?annotation2",isAnnotation=true)

????????public?void?sayHello(){

????????????????System.out.println("hello?world!");

????????}

}

?

Annotation测试说明类

import?java.lang.reflect.Method;

import?org.junit.Test;

public?class?TestAnnotation?{

????????@Test

????????public?void?test()?throws?Exception{

????????????????Class<?>?cls?=?Class.forName("chb.test.annotation.AnnotationDemo");

????????????????boolean?flag?=?cls.isAnnotationPresent(MyAnnotation1.class);

????????????????if(flag){

??????????????????????System.out.println("判断类是annotation");

??????????????????????MyAnnotation1?annotation1=cls.getAnnotation(MyAnnotation1.class);

??????????????????????System.out.println(annotation1.value());

????????????????}

????????????????Method?method?=?cls.getMethod("sayHello");

????????????????flag?=?method.isAnnotationPresent(MyAnnotation2.class)?;

????????????????if(flag){

???????????????System.out.println("判断方法也是annotation");

???????????????MyAnnotation2?annotation2=method.getAnnotation(MyAnnotation2.class);

???????????????System.out.println(annotation2.description()+"\t"+annotation2.isAnnotation());

????????????????}

????????}???

}

热点排行