本文接上文“反射之获取类的信息”,利用反射(invoke)来获取一个类中的方法来执行。
1、定义一个类,包含三个名称相同,参数不同的方法
1 class A{ 2 public void print(){ 3 System.out.println("Hello,World"); 4 } 5 6 public void print(int a,int b){ 7 System.out.println(a+b); 8 } 9 public void print(String a,String b){10 System.out.println(a.toUpperCase()+","+b.toLowerCase());11 }12 }2、利用方法的反射(invoke)分别获取该类三个方法并执行
1 public class Test { 2 public static void main(String[] args) { 3 /** 4 * 获取print(int,int)方法 5 * 1、获取类的类类型 6 */ 7 A a1 = new A(); 8 Class clazz = a1.getClass(); 9 /**10 * 2、获取方法(名称、参数列表)11 * getMethod()获取的是public方法12 * getDeclaredMethod()获取的是自己声明的方法13 */14 try {15 // Method m = clazz.getMethod("print",new Class[]{int.class,int.class});16 Method m = clazz.getMethod("print", int.class, int.class);17 //方法的反射操作,用m对象进行方法调用,a1.print完全相同18 //方法没有返回值返回null,有返回值返回具体的返回值19 // Object obj = m.invoke(a1,new Object[]{10,20});20 Object obj = m.invoke(a1,10,20);21 22 System.out.println("================================================");23 24 Method m2 = clazz.getMethod("print", String.class, String.class);25 m2.invoke(a1,"aaa","BBB");26 27 System.out.println("================================================");28 29 Method m3 = clazz.getMethod("print");30 m3.invoke(a1);31 } catch (Exception e) {32 e.printStackTrace();33 }34 }35 }3、完整代码
本文档主要讲述的是mybatis语法和介绍;MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。感兴趣的朋友可
2


1 package com.format.test; 2 3 import java.lang.reflect.Method; 4 5 /** 6 * Created by Format on 2017/6/3. 7 */ 8 public class Test { 9 public static void main(String[] args) {10 /**11 * 获取print(int,int)方法12 * 1、获取类的类类型13 */14 A a1 = new A();15 Class clazz = a1.getClass();16 /**17 * 2、获取方法(名称、参数列表)18 * getMethod()获取的是public方法19 * getDeclaredMethod()获取的是自己声明的方法20 */21 try {22 // Method m = clazz.getMethod("print",new Class[]{int.class,int.class});23 Method m = clazz.getMethod("print", int.class, int.class);24 //方法的反射操作,用m对象进行方法调用,a1.print完全相同25 //方法没有返回值返回null,有返回值返回具体的返回值26 // Object obj = m.invoke(a1,new Object[]{10,20});27 Object obj = m.invoke(a1,10,20);28 29 System.out.println("================================================");30 31 Method m2 = clazz.getMethod("print", String.class, String.class);32 m2.invoke(a1,"aaa","BBB");33 34 System.out.println("================================================");35 36 Method m3 = clazz.getMethod("print");37 m3.invoke(a1);38 } catch (Exception e) {39 e.printStackTrace();40 }41 }42 }43 44 class A{45 public void print(){46 System.out.println("Hello,World");47 }48 49 public void print(int a,int b){50 System.out.println(a+b);51 }52 public void print(String a,String b){53 System.out.println(a.toUpperCase()+","+b.toLowerCase());54 }55 }4、执行结果

以上就是利用反射(invoke)来获取一个类中的方法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号