Java进阶(极客)——反射机制(三)Method 对象的机制与实现
2015-06-30 10:03
609 查看
1、Method对象概述:
1.1java.lang.reflect.Method,是用于表示类中,接口中方法对象的类
1.2可以操作类中私有以及共有等全部方法
2、Method对象的常用方法
getName();//获得方法名称
getReturnType();//获得方法返回值类型
invoke(Object obj, Object...args);//利用obj对象调用该方法
getParameterTypes();//获得方法所有参数类型,按照顺序返回Class数组
getDeclaredAnnotations();//获取方法全部注解
MethodTest:
Book:
源码下载:
http://download.csdn.net/detail/zhaihaohao1/8852965
参考视频:
http://www.jikexueyuan.com/course/530.html
1.1java.lang.reflect.Method,是用于表示类中,接口中方法对象的类
1.2可以操作类中私有以及共有等全部方法
2、Method对象的常用方法
getName();//获得方法名称
getReturnType();//获得方法返回值类型
invoke(Object obj, Object...args);//利用obj对象调用该方法
getParameterTypes();//获得方法所有参数类型,按照顺序返回Class数组
getDeclaredAnnotations();//获取方法全部注解
MethodTest:
package com.zhh.fanshe.main; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import com.zhh.fanshe.domain.Book; /** * Method 对象的机制与实现 * * */ public class MethodTest { public static void main(String[] args) { Book book = new Book(); //show(book); showUse1(book);//打印getName方法被调用了 showUse2(book); System.out.println(book.getName());//打印getName方法被调用了 西游记 showUse3(book);//打印 哈哈12 } /**该方法用于获取对象的所有方法名称、返回值类型、以及参数信息 * * */ public static void show(Object ob) { Class cl = ob.getClass(); Method[] me = cl.getDeclaredMethods(); for (Method mm : me) { System.out.println("方法名称:" + mm.getName()); System.out.println("方法修饰符:" + Modifier.toString(mm.getModifiers())); System.out.println("方法返回值类型:" + mm.getReturnType()); Class[] preType = mm.getParameterTypes(); System.out.println("方法参数列表:"); for (Class cll : preType) { System.out.println(cll.getName()); } } } /**该方法用于使用传递过来的实体对象 获取其中的方法 并调用 * * * */ public static void showUse1(Object ob) { try { /*方法名称:getName,没有参数 * */ Class cl = ob.getClass(); Method me = cl.getMethod("getName", null);//获取一个无参的方法对象 me.invoke(ob, new Object[0]);//调用getName方法 } catch (Exception e) { e.printStackTrace(); } } /** * 该方法用于使用传递过来的实体对象 获取其中的方法 并调用 * * * */ private static void showUse2(Object ob) { try { /*方法名称:setName,参数类型String * */ Class c2 = ob.getClass(); Method me1 = c2.getMethod("setName", String.class); me1.invoke(ob, "西游记");//调用setName方法 } catch (Exception e) { e.printStackTrace(); } } /** * 该方法用于使用传递过来的实体对象 获取其中的方法 并调用 * * * */ private static void showUse3(Object ob) { /*方法名称:setName,参数类型String,int * */ try { Class c3 = ob.getClass(); Class[] cll = { String.class, int.class }; Method me2 = c3.getMethod("test", cll);//获取一个2个参数的方法对象 Object[] obb = { "哈哈", 12 }; me2.invoke(ob, obb);//调用test方法 } catch (Exception e) { e.printStackTrace(); } } }
Book:
package com.zhh.fanshe.domain; public class Book { public int id; private String name; private String type; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { System.out.println("getName方法被调用了"); return name; } public void setName(String name) { this.name = name; } public String getType() { return type; } public void setType(String type) { this.type = type; } public void test(String name, int i) { System.out.println(name); System.out.println(i); } }
源码下载:
http://download.csdn.net/detail/zhaihaohao1/8852965
参考视频:
http://www.jikexueyuan.com/course/530.html
相关文章推荐
- 最短路径算法之Dijkstra算法(java实现)
- 在Eclipse中导入Tiny工程,有下面的错误,是什么原因?
- 《Java程序设计》日志一
- 工作空间项目不存在,eclipse中项目删不掉
- Java进阶(极客)——反射机制(二)Field 对象的机制与实现
- Spring+ibatis出现ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
- Java进阶(极客)——反射机制(一)概述及Class 对象的机制与实现
- 单例模式
- eclipse不自动弹出提示
- Java基础:String类型下的方法
- Java按值传递、按引用传递
- 开源中国GIT中Java分类下TOP10项目的活动情况分析
- Eclipse设置相同变量背景色高亮显示
- 驰骋工作流推出JAVA版本--JFlow
- MyBatis+Spring 事务管理
- Java 连接Access数据库的两种方式
- Java构造函数的相互调用
- Web应用与Spring MVC锁session
- Java中使用JDBC操作数据库简单实例
- 【JAVA】LinkedList使用详解