工具类系列-ClazzReflectUtil

package com.syk.utils.clazzReflection;

import java.lang.reflect.Method;

public class ClazzReflectUtil {
    
    public void runMethod(ClazzMethodInputDto inputDto) {
        try {
            Class<?> clazz = Class.forName(inputDto.getClazzName());
            Method method = clazz.getMethod(inputDto.getClazzMethodName(), inputDto.getClazzMethodType());
            method.invoke(clazz.newInstance(), inputDto.getClazzMethodValue());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static void main(String[] args) {
        ClazzMethodInputDto inputDto = new ClazzMethodInputDto();
        inputDto.setClazzName("com.syk.utils.clazzReflection.B");
        inputDto.setClazzMethodName("doAdd");
        inputDto.setClazzMethodType(Double.class);
        inputDto.setClazzMethodValue(55.22);
        new ClazzReflectUtil().runMethod(inputDto);
    }
}

class A {
    public void doAdd(String tips) {
        System.out.println("=======doAddString==" + tips + "======");
    }

    public void doAdd(Double tips) {
        System.out.println("=======doAddint==" + tips + "======");
    }

    public void doMinus(String tips) {
        System.out.println("=======doMinus==" + tips + "======");
    }
}

class B extends A {
    public void doAdd(Double tips) {
        System.out.println("=======BdoAddint==" + tips + "======");
    }
}


package com.syk.utils.clazzReflection;

public class ClazzMethodInputDto {

    /**
     * 完整类名
     */
    private String clazzName;
    
    /**
     * 类方法名
     */
    private String clazzMethodName;
    
    /**
     * 类方法参数列表类型
     */
    private Class<?> clazzMethodType;
    
    /**
     * 类方法参数列表值
     */
    private Object clazzMethodValue;

    public String getClazzName() {
        return clazzName;
    }

    public void setClazzName(String clazzName) {
        this.clazzName = clazzName;
    }

    public String getClazzMethodName() {
        return clazzMethodName;
    }

    public void setClazzMethodName(String clazzMethodName) {
        this.clazzMethodName = clazzMethodName;
    }

    public Class<?> getClazzMethodType() {
        return clazzMethodType;
    }

    public void setClazzMethodType(Class<?> clazzMethodType) {
        this.clazzMethodType = clazzMethodType;
    }

    public Object getClazzMethodValue() {
        return clazzMethodValue;
    }

    public void setClazzMethodValue(Object clazzMethodValue) {
        this.clazzMethodValue = clazzMethodValue;
    }
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值