Java 通过反射出方法名来运行 invoke该方法,此名称字符串一定完全匹配并且区分大小写Method meth =cla.getMethod("setStr1", new Class[]{java.lang.String.class}); new class 参数类型集合Object result=meth.invoke(object, new Object[]{"test..."}); new object 为输入参数类型的值 与上面的数目是对应的。
import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.lang.reflect.Type;import java.util.Iterator;public class TestMe { private String str1; private String str2; private String str3; public void method1() { System.out.println("TestMe--------method1方法.."); } public void method2() { System.out.println("TestMe--------method2方法.."); } public void method3() { System.out.println("TestMe--------method3方法.."); } public void setStr1(String str1) { this.str1 = str1; System.out.println(str1); } public String getStr1() { return str1; } public void setStr2(String str2) { this.str2 = str2; } public String getStr2() { return str2; } public void setStr3(String str3) { this.str3 = str3; } public String getStr3() { return str3; } public static void main(String[] args) { test(); } private static void test() { Class cla = TestMe.class; try { Object object = cla.newInstance(); Method[] methods = cla.getMethods(); Method method; for (int i = 0; i < methods.length; i++) { method = methods[i]; System.out.println(method.getName()); // 方法的返回值类型 Type returntype = method.getReturnType(); System.out.println("方法返回值类型" + returntype); // 方法的参数类型 Type[] types = method.getGenericParameterTypes(); for (int j = 0; j < types.length; j++) { Type type = types[j]; System.out.println("方法参数类型type: " + j + "----" + type); } } Field[] fileds = cla.getDeclaredFields(); Field field; for (int i = 0; i < fileds.length; i++) { field = fileds[i]; System.out.println("---------------------------"); System.out.println(field.getType()); System.out.println(field.getName()); } Method meth =cla.getMethod("setStr1", new Class[]{java.lang.String.class}); Object result=meth.invoke(object, new Object[]{"test..."}); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}运行结果:main
方法返回值类型void
方法参数类型type: 0----class [Ljava.lang.String;
method1
方法返回值类型void
method2
方法返回值类型void
method3
方法返回值类型void
setStr1
方法返回值类型void
方法参数类型type: 0----class java.lang.String
getStr1
方法返回值类型class java.lang.String
setStr2
方法返回值类型void
方法参数类型type: 0----class java.lang.String
getStr2
方法返回值类型class java.lang.String
setStr3
方法返回值类型void
方法参数类型type: 0----class java.lang.String
getStr3
方法返回值类型class java.lang.String
wait
方法返回值类型void
wait
方法返回值类型void
方法参数类型type: 0----long
方法参数类型type: 1----int
wait
方法返回值类型void
方法参数类型type: 0----long
hashCode
方法返回值类型int
getClass
方法返回值类型class java.lang.Class
equals
方法返回值类型boolean
方法参数类型type: 0----class java.lang.Object
toString
方法返回值类型class java.lang.String
notify
方法返回值类型void
notifyAll
方法返回值类型void
---------------------------
class java.lang.String
str1
---------------------------
class java.lang.String
str2
---------------------------
class java.lang.String
str3
test...Java编程思想(第4版) 中文清晰PDF完整版 http://www.linuxidc.com/Linux/2014-08/105403.htm编写高质量代码 改善Java程序的151个建议 PDF高清完整版 http://www.linuxidc.com/Linux/2014-06/103388.htmJava 8简明教程 http://www.linuxidc.com/Linux/2014-03/98754.htmJava对象初始化顺序的简单验证 http://www.linuxidc.com/Linux/2014-02/96220.htmJava对象值传递和对象传递的总结 http://www.linuxidc.com/Linux/2012-12/76692.htm本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-09/106585.htm