首页 > 编程语言 > 详细

java注解方式进行反射

时间:2014-11-02 02:05:58      阅读:364      评论:0      收藏:0      [点我收藏+]

我的博客网站:http://www.zeromike.net/

本文地址:http://www.zeromike.net/?p=48

反射的一种使用场景是业务代码里有很多不同的方法,通过客户端传入方法名称和参数调用执行业务方法。我这里只写出示意性代码,下篇我会写phonegap插件怎么写。

1.注解代码

?

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

   @Retention(RetentionPolicy.RUNTIME)//表示注解的信息被保留在class文件(字节码文件)中当程序编译时,会被虚拟机保留在运行时
   @Target(ElementType.METHOD)//说明该注解只能被声明在一个类的方法前
   public @interface MyAnnontion {

   }

?

2.业务代码

public class MyTest {
	@MyAnnontion
	public void sendMessage(String message){
		System.out.println("send Message..."+message);
	}
	@MyAnnontion
	public void findAll(){
		System.out.println("find all...");
	}
}

?

3.测试代码

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class MyMain {

	public static void main(String[] args) throws IllegalAccessException,
			IllegalArgumentException, InvocationTargetException {
		Method[] method = MyTest.class.getMethods();
		MyTest test = new MyTest();
		for (Method m : method) {
			MyAnnontion annotation = m.getAnnotation(MyAnnontion.class);// 获得当前方法注解
			if (annotation != null) {
				int isParam = m.getParameterTypes().length;// 判断是否有参数
				if (isParam == 0) {
					m.invoke(test);
				} else {
					m.invoke(test, new Object[] { "abc" });
				}
			}
		}
	}

}

?

?

结果:

?

find all...

send Message...abc

?

原文链接:http://www.zeromike.net/?p=48

原文作者:zeromike

java注解方式进行反射

原文:http://zhangzhaoaaa.iteye.com/blog/2150992

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!