zoukankan      html  css  js  c++  java
  • JAVA反射-根据某个对象的名称和方法去执行该方法

    package com.citic.util;
    
    import java.lang.reflect.*;
    import java.util.HashMap;
    
    import com.citic.util.comm.*;
    
    /**
     * 根据某个对象的名称和方法去执行该方法
     * @author db2admin
     *
     */
    public class ReflectUtil { 
        public static String methodName="execute";
        public static int debuglevel=8;
        public static HashMap<String,String[]> preexecute(String className,String xmlOder,String msgid){
            //返回有一般预设两个code,message
            return execute(className,"pre"+methodName,xmlOder,msgid);
        }
        
        public static HashMap<String,String[]> execute(String className,String xmlOder,String msgid){
            return execute(className,methodName,xmlOder,msgid);
        }
        
        @SuppressWarnings("unchecked")
        public static HashMap<String,String[]> execute(String className,String methodName,String xmlOder,String msgid) {
            HashMap<String,String[]> hm=new HashMap<String,String[]>();
            Method m1;
            Class<?> clazz;
            Object obj;
            String tb = ConfigFileUtil.getValue("SCHEMAPREFIX1")
                    + ConfigFileUtil.getValue("T" + xmlOder);
            CommFun.log(debuglevel, "调用类:" + className + ",方法:" + methodName
                    + ",参数:" + msgid+",表名:"+tb+",xmlOrder:"+xmlOder);
            try {
                if("".equals(tb)||tb==null){
                    throw new Exception(xmlOder+"对应表名为空");
                }
                clazz=Class.forName(className);
                obj=clazz.newInstance();
                //解决父类调用问题
                while(true){
                    try{
                        m1=obj.getClass().getDeclaredMethod(methodName, String.class,String.class,String.class);
                        CommFun.log(clazz.toString()+","+obj.toString()+","+m1.toString());
                    }catch(NoSuchMethodException ne){
                        clazz=clazz.getSuperclass();
                        obj=clazz.newInstance();
                        CommFun.log(clazz.toString()+","+obj.toString());
                        continue;
                    }
                    break;
                }
                hm=(HashMap<String, String[]>) m1.invoke(obj,xmlOder,msgid,tb);
            } catch (Exception e) {
                CommFun.log("---------");
                e.printStackTrace();
                CommFun.log("["+e.toString()+"]");
            }
            return hm;
        }
    }
  • 相关阅读:
    Dubbo-admin管理平台搭建
    Zabbix监控Zookeeper健康状况
    Redis-stat 的安装与使用
    Jenkins配置基于角色的项目权限管理
    云计算的三种服务模式:IaaS,PaaS和SaaS
    PRC远程过程调用
    解决linux中ssh登录Warning:Permanently added (RSA) to the list of known hosts
    Maven仓库—Nexus环境搭建及使用
    SecureCRT使用本地公钥 SSH 免密码登录Linux
    Linux内存管理机制
  • 原文地址:https://www.cnblogs.com/silencemaker/p/12632207.html
Copyright © 2011-2022 走看看