Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JDK8(可选)为空字段创建自定义IntelliJ getter模板_Java_Templates_Intellij Idea_Velocity - Fatal编程技术网

Java 如何使用JDK8(可选)为空字段创建自定义IntelliJ getter模板

Java 如何使用JDK8(可选)为空字段创建自定义IntelliJ getter模板,java,templates,intellij-idea,velocity,Java,Templates,Intellij Idea,Velocity,我正在尝试创建一个自定义IntelliJ模板,该模板可以选择使用JDK8。如果一个字段用@Nullable注释,我想使用Optional作为getter 与此相反(使用默认getter模板): 我想要这个: @Nullable private final String name; public java.util.Optional<String> getName() { return java.util.Optional.ofNullable(name); } getAn

我正在尝试创建一个自定义IntelliJ模板,该模板可以选择使用JDK8。如果一个字段用
@Nullable
注释,我想使用Optional作为getter

与此相反(使用默认getter模板):

我想要这个:

@Nullable
private final String name;

public java.util.Optional<String> getName() {
    return java.util.Optional.ofNullable(name);
}
getAnnotation(javax.annotation.Nullable.class)
似乎不起作用。还缺少使用
可选
而不是
字符串

我使用的是
javax.annotation.Nullable
注释,但理想情况下,它可以与任何配置的注释一起使用:


我就是这样配置的。我有一个名为
可选getter
的getter模板:

#if($field.modifierStatic)
static ##
#end
Optional<$field.type> ##
#if($field.recordComponent)
  ${field.name}##
#else
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
#if ($field.boolean && $field.primitive)
  is##
#else
  get##
#end
${name}##
#end
() {
  return Optional.ofNullable($field.name);
}
#如果($field.modifierStatic)
静止的##
#结束
可选的##
#如果($field.recordComponent)
${field.name}##
#否则
#set($name=$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field,$project)))
#if($field.boolean&&$field.primitive)
是##
#否则
得到##
#结束
${name}##
#结束
() {
返回可选的.ofNullable($field.name);
}
对于getter,我通常使用
Lombok
,这就是为什么我可以一直选择该模板的原因。下面是在
Generate…->Getter

#if($field.modifierStatic)
static ##
#end
Optional<$field.type> ##
#if($field.recordComponent)
  ${field.name}##
#else
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
#if ($field.boolean && $field.primitive)
  is##
#else
  get##
#end
${name}##
#end
() {
  return Optional.ofNullable($field.name);
}

当我选择了这个,然后我就可以开始键入getSomething。。。此时将出现一个弹出窗口:

点击enter键后,插入以下代码:


暗中捅:试试
isAnnotationPresent
?(而不是
getAnnotation
#if($field.modifierStatic)
static ##
#end
Optional<$field.type> ##
#if($field.recordComponent)
  ${field.name}##
#else
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
#if ($field.boolean && $field.primitive)
  is##
#else
  get##
#end
${name}##
#end
() {
  return Optional.ofNullable($field.name);
}