调用反射的方法
程序员文章站
2022-07-05 22:46:35
调用反射的方法
import Demo2.ClassUtil;
import java.lang.reflect.Method;
public class Office...
调用反射的方法
import Demo2.ClassUtil; import java.lang.reflect.Method; public class Office { public static void main(String[] args) { //new 创建对象 是静态加载类,在编译时刻就需要加载所有的可能使用到的类。 //通过动态加载类可以解决该问题 //String s = "hello"; //ClassUtil.printClassMessage(new Integer(1)); // ClassUtil.printClassMethodsMessage(s); // ClassUtil.printFieldMessage(s); // ClassUtil.printConMessage(new Integer(1)); //要获取print(int,int)方法 // 1.要获取一个方法就是获取类的信息,获取类的信息首先呀获取类类型 TestClass a = new TestClass(); Class c = a.getClass(); /* *2.获取方法 名称和参数列表来决定 * getMethod 获取的是public的方法 * getDelcaredMethod自己声明的方法 */ try { // java.lang.reflect.Method m = c.getMethod("print",new Class[]{int.class,int.class}); Method m = c.getMethod("print", int.class, int.class); Method printStr = c.getMethod("PrintStr",String.class,String.class); //方法的反射操作 //a.print(1,2);//方法的反射操作是用m对象来进行方法m的调用和a.print()效果一样 //方法如果没有返回值返回null,有返回值返回具体的返回值 //Object obj = m.invoke(a,1,1); // Object o = m.invoke(a,new Object[]{1,9}); /* Object oStr =printStr.invoke(a,"a","b"); System.out.println(oStr);*/ } catch (Exception e) { e.printStackTrace(); } } } class TestClass{ public void print(int a ,int b){ System.out.println(a+b); } public void print(String a ,String b){ System.out.println(a.toUpperCase()+","+b.toUpperCase()); } public TestClass (){ } public String PrintStr(String a ,String b){ return a+b; } }