【JAVA】根据类名+方法名调用其方法的几种常见方法

代码如下:

package com.***.scheduleTask;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**

  • @Description 演示: 根据类名+方法名来执行方法
  • @Author 最闲程序员
  • @Version 1.0
  • @Date 2019-12-05 14:59
    */

public class TestTask {

String classParam = null;

public void test1() {
    System.out.println("=====方法1");
}

public void test2(String test2Param) {
    System.out.println("=====方法2: test2Param = " + test2Param);
}

public void test3() {
    System.out.println("======方法3: classParam = " + classParam);
}


public static void main(String[] args) {
    Class clazz = null;
        try {
        //根据类名全路径找到class
        String beanClass = "com.***.scheduleTask.TestTask";
        clazz = Class.forName(beanClass);
        //获取所在类的对象
        Object obj = clazz.newInstance();

         //TODO 根据方法名找到方法,并执行方法

        /**
         * 演示方法1: 直接调用方法1
         */
        //获取方法
        Method method1 = clazz.getMethod("test1");
        method1.invoke(obj);

        /**
         * 演示方法2: 给局部参数赋值的方法
         */
        //获取方法
        Method method2 = clazz.getMethod("test2", String.class);
        //第一个参数是该类的对象,后面接着这个方法的形参类型
        method2.invoke(obj, "方法2的参数");


        /**
         * 演示方法3: 给全局变量赋值
         */
        //获取方法
        Method method3 = clazz.getMethod("test3");
        // paramName是类beanClass类中的一个属性
        Field f = clazz.getDeclaredField("classParam");
        f.setAccessible(true);
        // 给classParam赋值
        //第一个参数是该类的对象,后面接着这个是类的全局变量
        f.set(obj, "全局变量");
        method3.invoke(obj);


    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("异常: " + e.getMessage());
    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值