invoke 的用法

package com.test;

import java.lang.reflect.Method;

class Tools {
    public void print() {
        System.out.print("无返回值的构造方法");
    }

    public String getInfo() {
        return "Hello World";
    }

    public int add(int x, int y) {
        return x + y;
    }

}

public class Invoke {
    public static void main(String args[]) {
        try {
            // 1 无返回值的调用
            // Class<?> cls = Class.forName("com.test.Tools");
            // Object obj = cls.newInstance();
            // Method mtd = cls.getMethod("print");
            // mtd.invoke(obj);

            // 2 有返回值的无参调用
            // Class<?> cls = Class.forName("com.test.Tools");
            // Object obj = cls.newInstance();
            // Method mtd = cls.getMethod("getInfo");
            // Object ret = mtd.invoke(obj);
            // System.out.print(ret);

            // 3 调用有参有返回值的
            Class<?> cls = Class.forName("com.test.Tools");
            Object obj = cls.newInstance();
            Method mtd = cls.getMethod("add", int.class, int.class);
            Object ret = mtd.invoke(obj, 10, 20);
            System.out.print(ret);
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

test

原文地址:https://www.cnblogs.com/arkia123/p/2970133.html