生成Getter时如何忽略注释?

我创建了一个简单的 Getter 生成器来生成一个“Optional-Getter”,它将字段包装在 Optional 中。问题是当字段被注释为@Nullable 时,getter 也将使用@Nullable 生成,我发现每次生成getter 时简单地删除它非常烦人。如何忽略服装吸气剂中的字段注释?


这是我的“Optional-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);

    }

}


长风秋雁
浏览 103回答 1
1回答

繁花如伊

获取插件CodeGenerator,通过他们的GitHub Repository > Releases.最新版本是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 ###endOptional<$field.type> ##${getter}() {&nbsp; return Optional.fromNullable($field.name);}#if($field.modifierStatic)static ###endvoid ${setter}($field.type $paramName) {#if ($field.name == $paramName)&nbsp; &nbsp; #if (!$field.modifierStatic)&nbsp; &nbsp; this.##&nbsp; &nbsp; #else&nbsp; &nbsp; &nbsp; &nbsp; $classname.##&nbsp; &nbsp; #end#end$field.name = $paramName;}#end&nbsp;Alt+ins您可以通过(或Code > Generate)使用它根据需要自定义您的模板,或添加新模板。享受 ;)这也是我在为 IDEA 寻找的东西。其实很久以来。不幸的是,到目前为止,它似乎无法参数化。这是 YouTrack 问题,它使自动插入@Nullable和@NotNull生成的 getter/setter可用https://youtrack.jetbrains.net/issue/IDEA-30683如果可能,您可以投票支持会自动转换为Optional<T>getter的功能https://youtrack.jetbrains.net/issue/IDEA-201804您可以投票支持向 Apache Velocity 模板公开注释的功能https://youtrack.jetbrains.net/issue/IDEA-176763
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java