下面是一個比較簡單的經過JAVA的反射機制調用已知方法的例子java
package com.togeek.mvntest; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * @author togeek 利用反射調用方法 * @address http://www.cnblogs.com/togeek/ * @Date: 2015年11月29日18:01:31 */ public class RefTest { @SuppressWarnings("unchecked") public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { Apple apple = new Apple(); apple.setName("我是蘋果"); System.out.println("正常調用:"+apple.getName()); Class appleClass = apple.getClass(); Method m1 = appleClass.getDeclaredMethod("getName"); Method m2 = appleClass.getDeclaredMethod("setName", String.class); System.out.println("反射調用:"+m1.invoke(apple)); System.out.println("反射set值:返回值爲null----"+ m2.invoke(apple, "我是送給togeek的蘋果!")); System.out.println("再次調用:"+m1.invoke(apple)); } } class Apple{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
結果:app
正常調用:我是蘋果 反射調用:我是蘋果 反射set值:返回值爲null----null 再次調用:我是送給togeek的蘋果!