Java-方法反射的基本操作

2020-09-25 245

Java-方法反射的基本操作

public class ClassDemo2 { /** * @Author: www.itze.cn * @Date: 2020/9/21 10:37 * @Email: 814565718@qq.com */ public static void main(String[] args) { /** * 要获取一个方法,就是获取一个类的信息,要获取类,就要先获取该类的类类型 */ A a = new A(); Class<? extends A> aClass = a.getClass(); /** * 获取方法 * getMethod()获取的时所有public的方法 * getDelcaredMethod()获取的时自己声明的方法 */ try { Method aClassDeclaredMethod = aClass.getMethod("print", new Class[]{int.class, int.class}); /** * 方法的发射 * 见到参数中出现...可以使用该类型的数组形式或者直接参数形式 */ //正常调用 a.print(); aClassDeclaredMethod.invoke(a, new Object[]{1, 1}); System.out.println("========================"); Method method = aClass.getMethod("print", String.class, String.class); method.invoke(a, "hello", "Word"); /** * 无参调用也是两种方式, * 方式一:getMethod("方法名","new Class[]{}") * 方式二:getMethod("方法名") */ Method priMethod = aClass.getMethod("print"); priMethod.invoke(a); } catch (Exception e) { e.printStackTrace(); } } } class A { public void print() { System.out.println("This No Param Method"); } 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.toLowerCase()); } }
3 3