开发者社区> 问答> 正文

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

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

求大神帮忙解答

展开
收起
问问小秘 2019-08-30 14:30:46 2851 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    一般现在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,得到方法的参数名称。 注:如果是动态代理出来的类,是拿不到方法参数名的

    2019-09-03 09:18:55
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载