IntelliJ IDEA Getter模板问题:Optional返回值未正常生成
问题
我尝试修改IntelliJ IDEA的默认Getter代码模板,使其返回成员变量的Optional包装类型,所用模板代码如下:
#if($field.modifierStatic) static ## #end java.util.Optional<$field.type> ## #if($field.recordComponent) ${field.name}## #else #set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))) #if ($field.boolean && $field.primitive) is## #else get## #end ${name}## #end () { return Optional.ofNullable($field.name); }
但使用该模板生成代码时,Optional<>未被输出,仅显示字段类型,生成的代码如下:
public MyObject getMyObject() { return Optional.ofNullable(myObject); }
请问我哪里操作出错了?
解决方法
问题出在模板里的HTML转义字符上。IntelliJ的Velocity模板解析时,不需要对<和>进行转义,直接使用原始符号即可。修改后的正确模板代码如下:
#if($field.modifierStatic) static ## #end java.util.Optional<$field.type> ## #if($field.recordComponent) ${field.name}## #else #set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))) #if ($field.boolean && $field.primitive) is## #else get## #end ${name}## #end () { return Optional.ofNullable($field.name); }
另外补充两个注意事项:
- 模板中已经使用
java.util.Optional全限定类名,生成代码时无需额外手动导入包(IDE也会自动帮你补全导入) - 对于布尔类型的基本数据字段,模板会生成
isXXX()格式的方法,符合JavaBean规范
内容的提问来源于stack exchange,提问作者Chris Spiking
相关产品推荐
相关产品推荐

