首页 > 编程语言 >java笔记_8_动态调用方法

java笔记_8_动态调用方法

时间:2022-12-08 16:23:16浏览次数:53  
标签:调用 java xxxClass 笔记 class printStackTrace catch new Class

    //1.根据名称获取类
    Class xxxClass = Class.forName("类名");
    //2.根据名称获取方法
    //2.1.不带参数
    Method xxxMethod = xxxClass.getMethod("方法名", new Class[]{})
    //2.2.带参数
    Method xxxMethod = xxxClass.getMethod("方法名", new Class[]{Long.class, String.class})
    //3.调用方法
    //3.1.无返回数据(是否有入参不影响)
    xxxMethod.invoke(xxxClass, new Object[] {});
    //3.1.有返回数据(是否有入参不影响)
    Integer returnData = (Integer)xxxMethod.invoke(xxxClass, new Object[] { 1L, "test" });
        Class xxxClass = null;
        try {
            xxxClass = Class.forName("xxx.xxx.xxx");
            Integer num = (Integer) xxxClass.getMethod(funcName, new Class[]{Long.class}).invoke(xxxClass, new Object[] { 1L });
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        Class<XXXService> xxxServiceClass = XXXService.class;
        try {
            Class<XXXService> xxxServiceClass = XXXService.class;
            XXXService xxxService = xxxServiceClass.getDeclaredConstructor().newInstance();
            //不传参
            Method func1 = xxxServiceClass.getDeclaredMethod(funcName);
            func1.invoke(xxxService);
            //传参
            Method func2 = xxxServiceClass.getDeclaredMethod(funcName, Long.class);
            func2.invoke(xxxService, uId);
            //传参,有返回数据
            Method func3 = xxxServiceClass.getDeclaredMethod(funcName, Long.class);
            Integer num = (Integer) func3.invoke(xxxService, uId);
                
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        }

 

标签:调用,java,xxxClass,笔记,class,printStackTrace,catch,new,Class
From: https://www.cnblogs.com/luyuting/p/16966442.html

相关文章

  • JAVA构造性能测试数据
    一、idea配置pom.xml文件1.打开idea编辑器,新建一个Maven项目,File-->New-->Project-->Maven,选择Maven,点击next。2.在Name编辑框中输入项目的名称,这里是dataProject,点......
  • 基于Java8Date-Time API的日期工具类
    在旧版的Java中,日期时间API存在诸多问题,其中有:非线程安全−java.util.Date是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一。设计很差−Java的......
  • Twitter的分布式自增ID雪花算法snowflake (Java版)
    分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用......
  • Java 8 Stream实现菜单树工具类
    TreeUtils:packagecom.ruoyi.common.core.utils.GuavaUtils.TreeUtils;importcom.alibaba.fastjson.JSON;importjava.util.Arrays;importjava.util.List;importjava.uti......
  • javascript-代码随想录训练营day15
    226.翻转二叉树题目链接:https://leetcode.cn/problems/invert-binary-tree/题目描述:给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。输入:root=[4,2,7,......
  • PHP 调用外部接口
    //1.类中定义静态方法classFtpService{/***请求外网*@param$url外网接口url*@parambool$params参数,拼接字符串post请求可以为数组*@paramint......
  • 随笔(四)『Java多线程(创建线程方式)』
    1、创建线程方式一:『继承Thread类』/***创建线程方式一:『继承Thread类』*/publicclassThreadTest{publicstaticclassMyThreadextendsThread{......
  • Java单例模式的最佳实践?
    “读过书,……我便考你一考。茴香豆的茴字,怎样写的?”——鲁迅《孔乙己》0x00大纲目录0x00大纲0x01前言0x02单例的正确性new关键字clone方法克隆反序列化反射0x03最......
  • javascript-代码随想录训练营day14
    递归的三要素:递归函数的参数和返回值单层递归的逻辑终止条件144.二叉树的先序遍历题目链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/题目描......
  • J-Link使用笔记(二):J-Flash 入门
    介绍J-Flash是J-Link系列工具里用于FLASH操作的GUI工具,也支持命令行方式操作。打开软件配置工程打开后软件界面如下:为了对芯片进行烧写,需要先配置工程:根据实际使......