实例:java
try { //获得对象 Class c = Class.forName("完整类名"); Object yourObj = c.newInstance(); //获得方法 Method methlist[] = cls.getDeclaredMethods(); for (int i = 0; i < methlist.length; i++) { Method m = methlist[i]; } //获取到方法对象,假设方法的参数是一个int,method名为setAge Method sAge = c.getMethod("setAge", new Class[] {int.class}); //得到参数Object Object[] arguments = new Object[] { new Integer(37)}; //执行方法 sAge.invoke(yourObj , arguments); } catch (Exception e) { }
下面以一个具体的实例来讲明。此实例来自《精通Hibernate 3.0 Java数据库持久层开发实践》一书。数据库
先在com.hqh.reflect下建一个文件UseInfojavathis
package com.hqh.reflect; public class UseInfo { private Integer id; private String userName; private String password; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } package com.hqh.reflect; public class GetClassTest { public static void main(String[] args) { GetClassTest test = new GetClassTest(); if(test.ClassCheck()) System.out.println("OK"); } public boolean ClassCheck() { try { System.out.println("经过类自己得到对象"); Class userClass = this.getClass(); System.out.println(userClass.getName()); System.out.println("==========="); System.out.println("经过子类的实例得到父类对象"); UseInfo useInfo = new UseInfo(); userClass = useInfo.getClass(); System.out.println(userClass.getName()); Class subUserClass = userClass.getSuperclass(); System.out.println(subUserClass.getName()); System.out.println("==========="); System.out.println("经过类名.class获取对象"); Class forClass = com.hqh.reflect.UseInfo.class; System.out.println(forClass.getName()); System.out.println("==========="); System.out.println("经过类名的字符串获取对象"); Class forName = Class.forName("com.hqh.reflect.UseInfo"); System.out.println(forName.getName()); System.out.println("============="); } catch (Exception e) { e.printStackTrace(); return false; } return true; } }
结果:code
经过类自己得到对象
com.hqh.reflect.GetClassTest
===========
经过子类的实例得到父类对象
com.hqh.reflect.UseInfo
java.lang.Object
===========
经过类名.class获取对象
com.hqh.reflect.UseInfo
===========
经过类名的字符串获取对象
com.hqh.reflect.UseInfo
=============
OK对象