實例: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對象