33

如何让IntelliJ在一行上生成 getter/setters 访问器方法,如下所示:

public String getAbc() { return abc; }

…而不是像这样的多行:

public String getAbc() {
   return abc;
}
4

6 回答 6

37

我正在使用 IntelliJ IDEA 14.1.0,您可以自定义此行为。

只需使用“生成...”选项,或使用Alt+Insert快捷键,然后选择“Getter and Setter”。

在打开的“选择字段”窗口中,顶部有“Getter Template”选项。使用下拉菜单旁边的“...”按钮来编辑模板。

选择“IntelliJ Default”并单击“复制”按钮创建一个名为“AlwayStartWithGet”的新文件,您可以对其进行编辑。

只需删除以下部分:

#if ($field.boolean)
  #if ($StringUtil.startsWithIgnoreCase($name, 'is'))
    #set($name = $StringUtil.decapitalize($name))
  #else
    is##
#end
#else
  get##
#end

并用一个简单的替换它

get##

你应该留下:

public ##
#if($field.modifierStatic)
  static ##
#end
$field.type ##
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
get##
${name}() {
  return $field.name;
}

现在,您可以在生成代码时使用自定义模板,方法是在 getter 模板下拉列表中选择它。

于 2015-03-31T16:12:10.813 回答
12

对于 2016 年创意。

吸气剂模板

将最后 3 行合并为一行:

${name}() { return $field.name; }

二传手模板

在最长行的末尾添加双哈希(不带空格):

[...] ($field.type, $paramName) {##

将最后两行合并为一行:

$field.name = $paramName; }

注意:正如@mindas 所评论的,您可能会想要没有版本化的视觉自动折叠。

于 2017-07-05T07:40:09.327 回答
11

你没有提到你使用的是什么版本的 IDEA,所以我假设最近的 8 或 9。

检查“对齐和大括号”下的代码样式设置。您应该在那里找到“一行中的简单方法”选项。

于 2009-11-23T19:06:47.437 回答
11

getter 和 equals/hashcode 都没有模板。这些在 IDEA 中是硬编码的。

来源

你可以在这个IntelliJ Wishlist中看到

于 2009-11-23T19:17:15.060 回答
10

我不知道你为什么要这样做,大概是为了节省视觉空间。如果是这样,只需使用 IntelliJ 的功能来折叠琐碎的 getter/setter 并忘记它是如何使用的。折叠功能可以在

设置 -> IDE 设置 -> 编辑器 -> 代码折叠 -> 显示代码折叠大纲 -> 简单属性访问器

于 2009-12-11T11:30:00.800 回答
2

Alex G 和 laffuste 提供了对我有帮助的答案,但即使您按照这些说明进行操作,IntelliJ 仍可能会自动格式化您的代码。要阻止这种情况发生,请转到设置 -> 编辑器 -> 代码样式 -> Java(或其他语言)。单击标题为“包装和大括号”的选项卡。在“重新格式化时保留”标题下,单击“一行中的简单方法”旁边的复选框。

为了更加简洁,您可以消除 getter 和 setter 方法之间的空白行。为此,请单击标题为“空白行”的选项卡。在标题为“最少空白行”的部分中,找到“周围方法”旁边的文本框。在文本框中输入 0。

得到

public ##
#if($field.modifierStatic)
static ##
#end
$field.type ##
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
get##
${name}(){ return $field.name; }

#set($paramName = $helper.getParamName($field, $project))
#if($field.modifierStatic)
static ##
#end
void set$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))($field.type $paramName) { ##
#if ($field.name == $paramName)
    #if (!$field.modifierStatic)
    this.##
    #else
        $classname.##
    #end
#end
$field.name = $paramName; }
于 2019-07-23T03:40:43.277 回答