Java有什么可以比较方便地提取表达式中的变量名吗?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Java有什么可以比较方便地提取表达式中的变量名吗?

问问小秘 2019-08-30 14:30:46 625

Java有什么可以比较方便地提取表达式中的变量名吗?

求大神帮忙解答

Java
分享到
取消 提交回答
全部回答(1)
  • 晓星加油
    2019-09-03 09:18:55
    推荐

    一般现在java使用spel表达式多一些.其他的提取变量名多数需要反射,如果是spel.以下可以借鉴.

    @Test
    public void testParse() {
        //表达式解析
        ExpressionParser expressionParser = new SpelExpressionParser();
        Expression expression = expressionParser.parseExpression("#itemId");
        EvaluationContext context = new StandardEvaluationContext();
        context.setVariable("itemId", "100");
        log.info("[SpELTest - testParse ] {} ", expression.getValue(context));
        //获取方法参数名
        LocalVariableTableParameterNameDiscoverer discoverer = new LocalVariableTableParameterNameDiscoverer();
        for (Method method : new StringUtils().getClass().getDeclaredMethods()) {
            for (String s : discoverer.getParameterNames(method)) {
                System.out.print("parm: "+s+"  ");
            }
            System.out.println("methodName:  "+method.getName());
        }
    }
    

    org.springframework.core.LocalVariableTableParameterNameDiscoverer也是Spring解析Controller方法参数使用的类,原理就是读取class字节码,解析其中中的LocalVariableTable,得到方法的参数名称。 注:如果是动态代理出来的类,是拿不到方法参数名的

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题