public void function(String str) {

//根据 str的值 调用相应的方法

}

public void test() {

//code

}

如str的值为test,就调用test方法。主要用到java反射机制,Class和Method这些类。

动态调用的方法:a.getClass().getMethod(str, new Class[]{}).invoke(a, new Object[]{})

其中,a为类的对象,str为要被调用的方法名

a.getClass()得到a.class对象

getMethod(str, new Class[]{})得到a对象中名为str的不带参数的方法。如果str方法带参数如str(String s, int i),就要这样写getMethod(str, new Class[]{String.class,int.class})

invoke(a,new Object[]{})调用方法,第一个参数是要调用这个方法的对象,如果方法是static的,这个参数可以为null。如果调用有参数的方法str(String s, int i),应该这样写invoke(a,new Object[]{"jimmy", 1})

下面是代码,帮助理解

public class MovingInvokeTest {

private static MovingInvokeTest movingInvokeTest = new MovingInvokeTest(); // 创建MovingInvokeTest对象

/*

* 根据str字符串调用方法,变量i只是为了判断,调用有几个参数的方法

*/

public void do_test(String str, int i) throws Exception {

if (i == 0) {

// 调用没有参数的方法

movingInvokeTest.getClass().getMethod(str, new Class[] {}).invoke(movingInvokeTest, new Object[] {});

} else if (i == 1) {

// 调用有一个参数的方法,参数为String类型的s

movingInvokeTest.getClass().getMethod(str, new Class[] { String.class }).invoke(movingInvokeTest, new Object[] { "s" });

} else if (i == 2) {

// 调用有两个参数的方法 参数分别为String类型的qw和int型的1

movingInvokeTest.getClass().getMethod(str, new Class[] { String.class, int.class }).invoke(movingInvokeTest, new Object[] { "qw", 1 });

}

}

public void speak() {

System.out.println("调用的没有参数的方法");

}

public void speak(String s) {

System.out.println("调用有一个参数的方法,参数为:" + s);

}

public void speak(String s, int i) {

System.out.println("调用有两个参数的方法,参数为,参数为:" + s + "和" + i);

}

public static void main(String[] args) throws Exception {

movingInvokeTest.do_test("speak", 1);

}

}

java 动态调用方法_Java动态调用方法相关推荐

  1. java 反射 set方法_java 反射调用set方法

    Java语言中的许多库类名称,多与咖啡有关.下面是小编为您带来的java 反射调用set方法,希望对大家有所帮助. java 反射调用set方法: import java.beans.Property ...

  2. java如何用c 的方法_JAVA如何调用C/C++方法

    JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能.解决JAVA对本地操作的一种方法就是JNI. JAVA通过JNI调用本地方法, ...

  3. java调用so库中的native方法_Java如何调用本地.so库里的方法

    首先在此之前希望你已经掌握了基本JNI常识的运用,比如Java代码如何调用本地native的方法,native方法如何访问本地变量,本地方法等以及其他相关的基础知识.在此我还是贴上Activity的部 ...

  4. java 引用其他类_java如何调用其他类中的方法?

    1.java如何调用其他类中的方法 java调用另一个类的方法: java类有两种方法一种是类方法就是用static修饰的,一种是实例方法,就是没有static修饰的方法.类方法可以同时类名,方法名的 ...

  5. java怎么调用另一个类的方法_java如何调用另一个类的方法

    java调用另一个类的方法:1.类方法用static修饰,代码为[public static void sayStatic()]:2.没有static修饰的方法,代码为[ public void sa ...

  6. java 调用父级方法_java子类调用父类的方法是什么

    java子类调用父类的方法:1.子类的对象调用方法时,会首先在子类中查找,如果子类中没有该方法,再到父类中查找:2.如果该方法中又调用了其他方法,那么还是按照之前的顺序,先在子类中查找,再在父类中查找 ...

  7. java怎么调用方法_Java怎么调用类方法

    Java调用类方法的步骤:首先新建一个类,在调用类中先进行被调用类实例化:然后通过实例化的对象访问:最后新建一个类,将该类中需要被调用的方法设置为静态,加了static后,就可以用类名直接调用,格式为 ...

  8. c调用其他类的方法_Java 的 Native 方法——今天又进步了

    1. 简介 1.1 个人理解 初次遇见 native 是在 java.lang.String 源码中的一个 intern 方法: public native String intern(); 因为还是 ...

  9. java native函数库_Java 层调用 Native 层函数的两种方式

    概述 Java 层如何调用Native层函数,大家都应该知道使用JNI(Java 本地接口). 通过在java层声明native方法,然后遵守JNI规范命名Native函数,即可建立Java层nati ...

最新文章

  1. 深度学习的算法实践和演进
  2. python web-手把手教你写网站:Python WEB开发技术实战
  3. MATLAB 数值数组和字符串转换
  4. 2-Tenor AF AFT400-实战-Lync Server 2010-集成-2012-01-19
  5. vba校对统计不同工作薄(2)
  6. mysql修改服务器ip,mysql数据库修改服务器ip
  7. 2020年最新程序员职业发展路线指南,超详细!
  8. github速成手册
  9. PHP学习笔记五(命名空间)
  10. Cameralink转HDMI接口转换模块
  11. Android应用的persistent属性
  12. wallpaper代码_70 行 python 代码实现壁纸批量下载!
  13. ARM 编译工具keil 和 IAR 命令行编译和下载
  14. AppScan--图解web扫描工具IBM Security AppScan Standard
  15. QNX微内核RTOS
  16. 韦东山C语言加强07
  17. 两点计算机械手旋转中心
  18. 高精度阶乘和 高精度算法(c语言)
  19. android studio 与eclipse创建命名空间时候的区别
  20. 上市企业高管背景研究——男、女性高管数据

热门文章

  1. python做数据可视化视频_如何制作数据可视化视频?
  2. 题库管理|考试管理|基于Web的大学生题库管理系统的设计与实现
  3. 会python再学java要多久_【学过python多久能学会java】廖雪峰python教程要学多久
  4. windows2003系统下phpstudy网站搭建
  5. c语言结构体一年的第几天是排卵期,C语言 求一个日期是这一年的第几天
  6. 全国计算机报告考点,全国计算机等级考试二级Access考点分析之报表(5)
  7. 1012 - 曼哈顿距离切比雪夫距离
  8. linux图形界面切换账户,linux图形界面和字符界面相互转换
  9. java的输入输出格式
  10. linux7防火墙拒绝ip访问,FirewallD防火墙常用经验——开放端口——拒绝某个IP访问...