我已经创建了一个简单的Getter生成器来生成“ Optional-Getter”,该字段将字段包装在Optional中。问题是当字段注释为@Nullable时,getter也会与@Nullable一起生成,我发现每次生成getter时都将其简单删除非常烦人。如何忽略服装吸气剂中的字段注释?
这是我的“可选字母”生成器。
#if($field.modifierStatic)
static ##
#end
Optional<$field.type> ##
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
#if ($field.boolean && $field.primitive)
is##
#else
get##
#end
${name}() {
return Optional.fromNullable($field.name);
}
这就是我生成吸气剂时的结果-
public class Class {
@Nullable
private String someMember;
@Nullable
public Optional<String> getSomeMember() {
return Optional.fromNullable(someMember);
}
}
这是预期的结果-
public class Class {
@Nullable
private String someMember;
public Optional<String> getSomeMember() {
return Optional.fromNullable(someMember);
}
}
答案 0 :(得分:3)
通过插件GitHub Repository > Releases
获得插件CodeGenerator。
最新版本是1.3.3
“从磁盘”安装插件,重新启动IntelliJ / Android Studio,然后通过Settings > CodeGenerator
,使用此代码修改默认的Getter and Setter
模板,并启用
#foreach($field in $fields)
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field.element, $project))))
#if ($field.boolean && $field.primitive)
#set($getter = "is${name}")
#else
#set($getter = "get${name}")
#end
#set($setter = "set${name}")
#if($field.modifierStatic)
static ##
#end
#if($field.modifierStatic)
static ##
#end
Optional<$field.type> ##
${getter}() {
return Optional.fromNullable($field.name);
}
#if($field.modifierStatic)
static ##
#end
void ${setter}($field.type $paramName) {
#if ($field.name == $paramName)
#if (!$field.modifierStatic)
this.##
#else
$classname.##
#end
#end
$field.name = $paramName;
}
#end
然后您可以通过Alt+ins
(或Code > Generate
)使用它
根据需要自定义模板,或添加新模板。享受;)
这也是我为IDEA寻找的东西。其实已经很久了。不幸的是,到目前为止,它似乎还无法参数化。
这是YouTrack问题,可将@Nullable
和@NotNull
自动插入生成的getter / setter方法
https://youtrack.jetbrains.net/issue/IDEA-30683
您可以投票支持在可能的情况下会自动转换为Optional<T>
吸气剂的功能
https://youtrack.jetbrains.net/issue/IDEA-201804
您可以投票给将注释公开给Apache Velocity模板的功能