You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaPoet编写带@Value注解的参数并处理$符号问题?

问题解决:JavaPoet生成@Value注解时$符号转义问题

问题根源

JavaPoet中$是内置的占位符标识,直接写入单个$会被框架解析为变量占位符,从而引发语法错误。同时你原代码里的addMember方法调用格式也不符合JavaPoet的规则。

修正后的代码

ParameterSpec parameterOfConst = ParameterSpec.builder(String.class, className)
        .addAnnotation(AnnotationSpec.builder(Value.class)
                .addMember("value", "$S", "$$${topics." + className.toLowerCase() + ".command}")
                .build())
        .build();

关键说明

  • $符号转义:JavaPoet要求用两个$$来表示输出一个$,所以$$$会最终生成${(前两个$$转义为单个$,第三个$是目标字符串里的正常字符)
  • 注解属性设置:addMember的第一个参数要明确指定注解的属性名(@Value的核心属性是value),$S是JavaPoet的字符串占位符,会自动帮你包裹双引号,无需手动添加
  • 完整构建:别忘了调用.build()完成ParameterSpec的实例化,否则代码无法正常生成目标参数结构

内容的提问来源于stack exchange,提问作者Yardim Server

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:29:52