gpt4 book ai didi

java - 生成Getter时如何忽略注解?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:17:01 26 4
gpt4 key购买 nike

我创建了一个简单的 Getter 生成器来生成一个“Optional-Getter”,它将字段包装在一个 Optional 中。问题是当该字段被注释为@Nullable 时,getter 也将使用@Nullable 生成,我发现每次生成getter 时简单地删除它非常烦人。我怎样才能忽略 costume 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);
}

这就是我生成 getter 时的结果 -

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);
}
}

最佳答案

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

enter image description here

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


这也是我为 IDEA 寻找的东西。其实从很久以前。不幸的是,到目前为止它似乎还不能参数化。

这是 YouTrack 问题,可以自动插入 @Nullable@NotNull生成 getters/setters

https://youtrack.jetbrains.net/issue/IDEA-30683

您可以投票给一个会自动转换为 Optional<T> 的功能 setter/getter ,在可能的情况下

https://youtrack.jetbrains.net/issue/IDEA-201804

并且您可以为将注释公开到 Apache Velocity 模板的功能投票

https://youtrack.jetbrains.net/issue/IDEA-176763

关于java - 生成Getter时如何忽略注解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54734226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com