Intellij Code Completion用于局部变量对象的所有setter/getter方法

Bla*_*unn 42 java editor intellij-idea

我确实尝试过搜索这个,但老实说,实际搜索的术语正在逃避我.一个小代码片段后跟问题.

Public class Person {

   String firstName;
   String lastName;

   public void setFirstName(String firstName) {
      this.firstName = firstName;
   }

   public String getFirstName() {
      return firstName;
   }
   ...
}
Run Code Online (Sandbox Code Playgroud)

另一个使用此person对象的对象中,我希望能够扩展Intellij中的所有setter方法.

public class PersonAssembler { 
    public static Person assemblePerson(SomeOtherObject someOtherObject) {

    Person person = new Person;

    //intellj would provide this below.
    person.setFirstName();
    person.setLastName();
    //end of what intellj provides.

    return person;
}
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?我已经查看了键盘快捷键等.我一直在使用intellij,所以只是想知道是否有人对此有所了解.

我希望列编辑模式,然后代码完成,也许是一个shift +向下箭头来选择多个完成,但没有运气.这并不奇怪.我不想在GUI中写这个.

编辑:我添加了一些澄清,并诚实地忘记了这个问题.如果仔细阅读,答案与实际问题无关.我不是在谈论Generate上下文菜单.

Mic*_*vis 33

在项目中,右键单击打字屏幕上的任意位置,然后单击"生成...",然后单击"Getter和Setter".然后,按住Ctrl键并单击要为其创建getter和setter的字段,然后单击"确定".

  • 他似乎不想生成getter/setter - 他想在客户端类中生成setter调用. (13认同)

rod*_*obb 19

这是一个老问题,但也许它可以帮助某人.

此外,它不是"单击"动作,而是......

要遵循的步骤:

  • 转到类文件
  • 打开结构视图(左侧面板)
  • 选择所有setter(如果需要,按字母顺序排序)并复制
  • 返回目标类/方法
  • 粘贴复制
  • 编辑(在列模式下)以包含person.在每个类的开头和()结尾处.


Nil*_*esh 18

创建getter setter的快捷方式是Alt+InsertIntellij.


ser*_*rup 12

当你的光标在新创建的类中时,你可以按ALT + Insert - 应该出现一个对话框然后你可以选择Getter和Setter

在此输入图像描述

  • 在`Mac`中它是`Ctrl` +`return` (7认同)

Veg*_*ard 6

我不确定如何在IntelliJ中执行此操作,但我会将您链接到一个框架,使Java中的这些事情变得更加顺畅:Project Lombok

以你的代码为例,它看起来像这样:

public class Person {
    @Setter
    @Getter
    String firstName;
    String lastName;
}
Run Code Online (Sandbox Code Playgroud)

有一个intellij的插入修复它所以你也没有得到任何恼人的警告.

http://projectlombok.org/


小智 5

这是我的插件genSets

Foo foo = new Foo();

像这样的代码

foo.allSet

会产生

foo.setName();
foo.setAge();
foo.setBar();
foo.setTest();
foo.setLike();
Run Code Online (Sandbox Code Playgroud)


Rad*_*FID 5

这个插件可以帮助GenerateAllSetter

CTRL + ENTER您要使用的位置,它将为您生成setter呼叫。