JAVA根据类名动态调用执行方法demo

 

 

IRuleModel.java

/**
 * 接口类
 * @author*/
public interface IRuleModel {

    /**
     * 执行的方法
     * @param paramString
     * @return
     */
    String execute(String paramString);
}

 

FilterRuleModel.java

import org.apache.commons.lang3.StringUtils;

/**
 * 具体实现
 * 这里截取去第二个字符,demo
 * @author .
 */
public class FilterRuleModel implements  IRuleModel{
    @Override
    public String execute(String paramString) {
        if (StringUtils.isBlank(paramString)) {
            return null;
        }
        String[] split = paramString.split(",");
        if (split.length>0) {
            return split[1];
        }
        return null;
    }
}

 

 

SplitRuleModel.java

import org.apache.commons.lang3.StringUtils;

/**
 * 具体实现
 * 这里截取取第三个demo
 * @author .
 */
public class SplitRuleModel  implements  IRuleModel{
    @Override
    public String execute(String paramString) {
        if (StringUtils.isBlank(paramString)) {
            return null;
        }
        String[] split = paramString.split(",");
        if (split.length>0) {
            return split[2];
        }
        return null;
    }
}

 

 

执行方法

    public static void main(String[] args) throws Exception {
        ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
        Class<?> ruleClass = contextClassLoader.loadClass("com.example.demo.rule.FilterRuleModel");
        IRuleModel ruleModelInstance = (IRuleModel)ruleClass.newInstance();
        System.out.println(ruleModelInstance.execute("1,2,3"));
    }

 

posted @ 2023-05-15 10:32  yvioo  阅读(207)  评论(0)    收藏  举报