私はオプションの内部でフィールドをラップ「オプションの-ゲッター」を生成するために、単純なゲッタージェネレータを作成しました。フィールドはゲッターも@Nullableで生成されます@Nullableとして注釈があると私は単にそれを私はゲッターを生成していますたびに削除することは非常に迷惑見つけたときに問題があります。どのように私は衣装ゲッターのフィールド注釈を無視することができますか?
これが私の「オプション・ゲッター」ジェネレータです。
#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);
}
}
プラグインを取得CodeGeneratorを彼らを通じて、GitHub Repository > Releases
。
最新のrelaseです1.3.3
IntelliJの/ Androidのメーカーは経由して、その後、再起動し、「ディスクから」プラグインをインストールし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
生成されたゲッター/セッターへの
https://youtrack.jetbrains.net/issue/IDEA-30683
あなたは自動的に変換します機能のために投票することができますOptional<T>
ことができ、ゲッター
https://youtrack.jetbrains.net/issue/IDEA-201804
そして、あなたは、Apache Velocityテンプレートに注釈を公開する機能のために投票することができます