`

annotation注解学习(by quqi99)

 
阅读更多

annotation注解学习(by quqi99)


作者:张华 发表于:2009-06-19 ( http://blog.csdn.net/quqi99 )

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明。

1) 定义注解:

package test.annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType;
/**
Annotation提供一种机制,将程序的元素如:类,方法,属性,参数,
本地变量,包和元数据联系起来。这样编译器可以将元数据存储在
Class文件中。这样虚拟机和其它对象可以根据这些元数据来决定如何
使用这些程序元素或改变它们的行为。
*
*/
//表示注解将会存储在Class文件中,并在java运行时VM运行时加载它
@Retention(RetentionPolicy.RUNTIME)
//表示我们创建的SimplwAnnotation将会为描述方法
@Target(ElementType.METHOD)
public @interface SimpleAnnotation {
String quqi();
}

2)使用注解

package test.annotation;

public class UsingSimpleAnnotation {
@SimpleAnnotation(quqi = "Pass:This method will Pass")
public void test() {
System.out.println("测试通过");
}
}

3)访问注解,并取得其值

package test.annotation;
import java.lang.reflect.Method;
public class SimpleAccessAnnotation {
static void accessAnnotationTest(Class usingAnnnotationClass) {
try {
// Object
// usingAnnnotationClass=Class.forName(usingAnnotationClassName).newInstance();
Method[] methods = usingAnnnotationClass.getDeclaredMethods();// 取得对方法
for (Method method : methods) {
System.out.println(method.getName());
SimpleAnnotation simpleAnnotation = method
.getAnnotation(SimpleAnnotation.class);// 得到方法的Annotation
if (simpleAnnotation != null) {
System.out.print(simpleAnnotation.quqi() + "==");//取得注解的值
method.invoke(method, new Object[] {}); //调用方法
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
accessAnnotationTest(UsingSimpleAnnotation.class);
}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics