本帖最后由 hljt512 于 2013-10-10 16:33:24 编辑

解决方案 »

  1.   

    不用if更乱
    正则比if效率还低
      

  2.   

    public static void main(String[] args) {
    String str = "asdsaf${sql.list}asas${rs.aaa}dfsdfsadfdf${sql.end} sadsdaf ${fun()} sffasdfasdf";
    Pattern pattern = Pattern.compile("\\$\\{([^.]+)\\.?(.*?)\\}");
    Matcher m = pattern.matcher(str);
    while(m.find()) {
    String fun = m.group(1);
    String paras = m.group(2);
    if(paras!=null&&!paras.equals("")){
    System.out.println(fun+"(\""+paras+"\")");
    }else {
    System.out.println(fun);
    }
    }
    }
      

  3.   

    如果碰到${sql.list}这个字符串就开始执行java函数sql(),碰到${rs.aaa}就开始执行rs("aaa")
    -----------------------------------------------------sql.list,方法是sql,不带参。rs.aaa,方法是rs,又把后面的当参数,你规则都不一样不写if怎么可能。
      

  4.   

    // 反射出元素类
    Class<?> cls = Class.forName("className");// 根据反射的元素类生成实例
    Object obj = cls.newInstance();
    //通过名字获取方法
    Field field = null;
    field = cls.getDeclaredField("methodName");
    //注入参数,运行方法
    field.set(obj,"value");