package javase; import java.lang.reflect.Method; import java.util.ArrayList; /** * Created by Kimi Raikkonen on 2018-01-30. */ public class ReflectTest { public static void main(String[] args) { // c1.getDeclaredMethod(); try { // 反射的使用方式 // 1.获取类的类类型 A a1 = new A(); Class c1 = a1.getClass(); // 也可以这样获取类类型 //Class c2 = A.class; // 2.获取方法的反射 /* 根据方法名和参数列表确定到底调用哪一个方法 */ Method method1 = c1.getMethod("print", new Class[]{String.class, String.class}); //3.通过反射调用方法 method1.invoke(a1, new Object[]{"hello", "WORLD"}); //也可以这样写 method1.invoke(a1, "hello", "WORLDLALA"); // method1.invoke(a1, "hello", 1); // 下面是没有入参的情况 // Method method2 = c1.getMethod("print", new Class[0]); // 或者 // Method method2 = c1.getMethod("print", new Class[]{}); // 或者 Method method2 = c1.getMethod("print"); // 调用 method2.invoke(a1); method2.invoke(a1, new Object[0]); method2.invoke(a1, new Object[]{}); // 有返回值的情况 用 Object 接收返回值 Method method4 = c1.getMethod("print", new Class[]{String.class}); Object returnString = method4.invoke(a1, new Object[]{"这是输入值"}); System.out.println(returnString); } catch (Exception e) { } } } class A { public String print(int a, int b) { System.out.println(a+b); return "sdfsdf"; } public void print(String a, String b) { System.out.println(a.toUpperCase()+" "+b); } public void print() { System.out.println("啦啦啦德玛西亚"); } public String print(String inputString) { return inputString; } }
JAVA通过反射调用方法
最新推荐文章于 2024-07-11 03:26:37 发布