He creado un generador de Getter sencilla para generar un "Opcional-Getter" que envuelve el campo dentro de un facultativo. el problema es cuando el campo es anotar como @Nullable también genera el captador con @Nullable y encontró que muy molesto para quitar simplemente cada vez que estoy generando un captador. ¿Cómo puedo ignorar la anotación de campo en un captador de disfraces?
Este es mi generador "Opcional-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);
}
y eso es el resultado ahora cuando estoy generando un captador -
public class Class {
@Nullable
private String someMember;
@Nullable
public Optional<String> getSomeMember() {
return Optional.fromNullable(someMember);
}
}
ese es el resultado esperado -
public class Class {
@Nullable
private String someMember;
public Optional<String> getSomeMember() {
return Optional.fromNullable(someMember);
}
}
Obtener el plugin CodeGenerator , a través de su GitHub Repository > Releases
.
La última es relase1.3.3
Instalar el plugin "del disco", vuelva a iniciar IntelliJ / Android de estudio, a continuación, a través de Settings > CodeGenerator
, modificar el valor por defecto Getter and Setter
plantilla con este código, y permitir que
#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
Puede que usarlo a través de Alt+ins
(o Code > Generate
)
Personalizar las plantillas, según sea necesario, o añadir otras nuevas. Disfrutar;)
Eso es algo que estaba viendo demasiado para IDEA. En realidad desde hace mucho tiempo. Por desgracia, a partir de ahora no parece ser parametrizable.
Esta es la cuestión YouTrack que hizo disponible la inserción automática de @Nullable
y @NotNull
a getters / setters generados
https://youtrack.jetbrains.net/issue/IDEA-30683
Usted puede votar por una característica que convierte automáticamente a un Optional<T>
comprador, siempre que sea posible
https://youtrack.jetbrains.net/issue/IDEA-201804
Y se puede votar a favor de la característica que expone las anotaciones a la plantilla de Apache Velocity