Intellij Idea IntelliJ getter/setter格式(单行与多行)

jtw3ybtb  于 2023-10-15  发布在  其他
关注(0)|答案(7)|浏览(137)

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

public String getAbc() { return abc; }

而不是像这样的多行:

public String getAbc() {
   return abc;
}
hec6srdp

hec6srdp1#

我使用的是IntelliJ IDEA 14.1.0,您可以自定义此行为。
只需使用“生成...”选项,或使用Alt+Insert快捷键,并选择“Getter and Setter”。
在打开的“选择字段”窗口中,您可以在顶部选择“Getter Template”。使用模板旁边的“...”按钮编辑模板。
选择“IntelliJ Default”并单击“Copy”按钮以创建一个名为“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模板中选择它。

nwo49xxi

nwo49xxi2#

为创意2016。

Getter模板

将最后3行合并为一行:

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

Setter模板

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

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

将最后两行合并为一行:

$field.name = $paramName; }
  • 注意:正如@mindas评论的那样,你可能会想要没有版本化的视觉自动折叠。
bqjvbblv

bqjvbblv3#

getter和equals/hashcode都没有模板。这些都是硬编码在IDEA中。
Source
在这个IntelliJ Wishlist中,

w51jfk4q

w51jfk4q4#

你没有提到你使用的是什么版本的IDEA,所以我假设最近的8或9。
在“对齐和大括号”下检查代码样式设置。你应该在那里找到一个“一行中的简单方法”选项。

hpxqektj

hpxqektj5#

我不知道你为什么要这样做,大概是为了节省视觉空间。如果是这样的话,只需使用IntelliJ的特性来折叠琐碎的getter/setter,忘记它是如何运行的。折叠功能可在
设置-> IDE设置->编辑器->代码折叠->显示代码折叠大纲->简单属性访问器

w41d8nur

w41d8nur6#

Alex G和laffuste提供了对我有帮助的答案,但即使在您遵循这些说明之后,IntelliJ仍然可能会自动格式化您的代码。要阻止这种情况发生,请转到设置->编辑器->代码样式-> Java(或其他语言)。点击标题为“ Package 和支架”的选项卡。在标题“Keep when reformating”下,单击“Simple methods in one line”旁边的复选框。
为了更简洁,您可以消除getter和setter方法之间的空白行。为此,请单击标题为“空白行”的选项卡。在标题为“最小空白行”的部分中,找到“Around方法”旁边的文本框。在文本框中输入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; }
6bc51xsx

6bc51xsx7#

至少更新2023.1.2的新版本:
您还需要确保以下设置也已启用:

  • 首选项>编辑器>代码样式> Java >空格>范围内
  • 代码支架

否则,花括号之间的空格将被格式化。

相关问题