根据方法名称动态调用方法

主要通过Java反射机制实现。

例如:

public class NewClass {
    private static final NewClass newClass = new NewClass();

    public  void doTest(String methodName){
        try {
            newClass.getClass().getMethod(methodName, new Class[]{}).invoke(newClass, new Object[]{});
        } catch (Exception ex) {
            Logger.getLogger(NewClass.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void speak(){
        System.out.println("speak");
    }

    public void running(){
        System.out.println("running");
    }

}
public class Test {
    public static void main(String[] args) {
        NewClass newClass =  new NewClass();
        newClass.doTest("speak");
        newClass.doTest("running");
    }
}

运行结果:

run:
speak
running
成功构建 (总时间: 0 秒)
时间: 2024-10-18 14:17:46

根据方法名称动态调用方法的相关文章

Java反射:根据方法名动态调用方法,解决商品动态属性取值问题。

public class Goods{ private String goodsName; private String attr1; private String attr2; private String attr3; private String attr4; ......... private String attr20; setter/getter方法 } 在数据库表goods中,已知该商品的属性个数N(满足:N=5,attr1—attr5有值,attr6-attr20为空).问如何取

Java 通过对象方法名动态调用方法

public class TestReflection {          /**      * Reflect test      * */     public static void main(String[] args) {            ReportObject rObject = new ReportObject();            Class rObjectClass = rObject.getClass();            try {          

.Net——动态调用方法

一,使用InvokeMember 思路:在类型的type的对象上调用InvokeMember方法,传递要在其上调用方法的对象,并指定BindingFlags为InvokeMethod.根据方法签名,可能还需要传递参数. 示例(对普通方法和对静态方法的调用): #region 动态调用方法--使用InvokeMember对一般方法的调用 //Type t = typeof(Calculator); //Calculator c = new Calculator(1, 2); //int resul

Struts2 动态调用方法

struts2动态调用方法有两种方式 方式一:用通配符进行调用: Action方法: 1 package com.bjyinfu.struts.actions; 2 3 public class CatchDynamicMethod { 4 5 public String doFirst(){ 6 System.out.println("执行doFirst方法"); 7 return "success"; 8 } 9 10 public String doSecon

自学ios开发-------Objective-c动态调用方法笔记

OC动态调用OC的函数调用是消息发送模式,即在运行时动态调用函数,OC在编译期可以调用任何函数,只要声明过这个函数,就不会报错,在真正运行的时候才会根据函数的名称找到对应的函数来调用[ASPerson SayHello] 编译时RunTime会将上述代码转化为objc_msgSend(ASPerson @selector(SayHello)) 所有定义的类型都继承自NSObject,NSObject中存在一个指向Class的指针 Class是指向objc_class结构的函数指针; struct

struts_2_Action类中方法的动态调用

(一)直接调用方法(不推荐使用) 1)Action类: private String savePath; public String getSavePath() { return savePath; } public void setSavePath(String savePath) { this.savePath = savePath; } public String other() { savePath = "other"; return "success";

php中怎么使用call_user_func动态调用方法

php中可使用call_user_func进行方法的动态调用,可以动态调用普通函数.类方法以及带参数的类方法1.定义一个普通函数getCurrentDate,用于获取今天日期.call_user_func带上的参数为要被调用的函数名fucntion getCurrentDate(){echo 'getCurrentDate:' . date('Y-m-d');}call_user_func('getCurrentDate'); 程序会自动执行getCurrentDate函数并获得期望的结果get

Lua中“.”调用方法与“:”调用方法的区别

Lua中"."调用方法与":"调用方法的区别:                                                                                                                         一.概述 学lua的时候有一个迷惑点,就是搞不清楚'.'与':'调用方法的区别,今天很早就起来看了看一个大牛的视频讲解,才顿悟了:'.'调用和':'实际是传递参数的个数不同而已,':

Struts2中Action的动态调用方法

在Struts2中,Action执行的时候并不一定要执行execute,我们可以指定Action执行哪个方法,下面分别介绍三种方法来指定Action执行哪个方法: 1.第一种方法,通过Action里的method属性指定执行方法,我们可以在struts.xml配置文件中配置Action的时候用method="   " 来指定执行的哪个方法. (1).接下来附上一个例子,通过第一种方法来指定执行方法,首先,复制一个已经搭建好struts2环境的web项目,这里我们复制ActionTest