为了账号安全,请及时绑定邮箱和手机立即绑定

生成Getter时如何忽略注释?

生成Getter时如何忽略注释?

长风秋雁 2022-06-23 10:32:02
我创建了一个简单的 Getter 生成器来生成一个“Optional-Getter”,它将字段包装在 Optional 中。问题是当字段被注释为@Nullable 时,getter 也将使用@Nullable 生成,我发现每次生成getter 时简单地删除它非常烦人。如何忽略服装吸气剂中的字段注释?这是我的“Optional-Getter”生成器。#if($field.modifierStatic)static ###endOptional<$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);    }}
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

获取插件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 ##

#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)使用它

//img1.sycdn.imooc.com//62b3d0bf0001817b03920236.jpg

根据需要自定义您的模板,或添加新模板。享受 ;)


这也是我在为 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


查看完整回答
反对 回复 2022-06-23
  • 1 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信