【问题标题】:Is there a way to automatically generate getters and setters in Eclipse?有没有办法在 Eclipse 中自动生成 getter 和 setter?
【发布时间】:2011-11-05 12:10:32
【问题描述】:

我正在开发一个新的 Android 项目 (Java),并创建了一个包含大量变量的对象。由于我计划为所有这些添加 getter 和 setter,我想知道:Eclipse 中是否有用于在给定类中自动生成 getter 和 setter 的快捷方式?

【问题讨论】:

  • 对我来说听起来像是个跟踪狂……我以前只是在没有 IDE 的情况下进行所有 Java 编程,所以使用 Eclipse 对我来说还是比较新的。
  • @krio - 全世界都不使用 Eclipse 开发 Java。我的大部分工作都是在 IntelliJ 中完成的,当我开始在 Eclipse 中工作时,我发现自己问了很多这样的问题。
  • @Phil, vcsjones - 非常抱歉,但请检查一下,-google.com.au/… - 我猜 stackoverflow 说研究很重要
  • 最快的方法:ctrl+3 g g a s
  • @Konstantin 只是说要避免在同一个类中使用它们,所以当你可以引用this.mCount 时不要调用this.getCount()。虽然这可能是一个成本更高的操作,但它是一种更简洁的方法,可以通过 getter 和 setter 访问其他对象的变量。

标签: java android eclipse keyboard-shortcuts


【解决方案1】:

在所需类的源代码窗口中调出上下文菜单(即右键单击)。然后选择Source子菜单;从该菜单中选择Generate Getters and Setters... 将导致出现一个向导窗口。

Source -> Generate Getters and Setters...

选择您要为其创建 getter 和 setter 的变量,然后单击 OK

【讨论】:

  • 只有“生成元素注释”,没有 Getter 和 Setter。我正在使用 Eclipse 4.4.0,安装了 PDT 插件。与此同时,这可以使用 - mikeangstadt.name/projects/getter-setter-gen .
  • 在 Eclipse Mars.2 Release (4.5.2) 上运行良好。谢谢。
  • 您也可以使用键盘快捷键SHIFT+ALT+S 访问此子菜单,然后按R 打开“生成Getters 和Setters”选项。
  • 有趣的是,我的答案如何如此受欢迎,但这些天我只会使用 Lombok,如下面的其他人所述。
  • 您也可以使用 CMD/CTRL- 并开始输入“get”或“set”,提案窗口将列出所有缺少的 getter/setter。选择您要添加实现的那个。
【解决方案2】:

当然。

使用“源”菜单或选定字段或类型的上下文菜单中的“生成 Getters 和 Setters”,或类型中的文本选择来打开对话框。 Generate Getter and Setter 对话框显示所选类型的所有字段的 getter 和 setter。这些方法按类型的字段分组。

查看help documentation 了解更多信息。

【讨论】:

    【解决方案3】:

    Right click -> Source -> Generate setters and getters

    但为了更方便,I always map this to ALT+SHIFT+G from Windows -> Preferences -> General -> Keys

    【讨论】:

      【解决方案4】:

      是的。右键单击代码,您会看到一个菜单弹出;在“Source”、“Generate Getters and Setters”旁边可以看到快捷方式,在我的系统上是 Alt+Shift+S 和 R。

      同样,您可以导航到该主菜单中的其他子菜单,通过键入相应的快捷方式,您可以直接进入子菜单而不是主上下文菜单,然后可以从菜单中选择或键入另一个字母以从列表中选择。

      【讨论】:

        【解决方案5】:

        右键->生成getter和setter可以很好地完成这项工作,但是如果你想在windows的eclipse中创建键盘快捷键,你可以按照以下步骤操作:

        1. 转到窗口 > 首选项
        2. 转到常规 > 按键
        3. “快速协助 - 为字段创建 getter/setter”列表
        4. 在下面的“绑定”文本字段中,按住所需的键(在我的情况下,我使用 ALT + SHIFT + G)
        5. 点击应用并确定
        6. 现在在您的 Java 编辑器中,选择您要为其创建 getter/setter 方法的字段,然后按您在第 4 步中设置的快捷方式。在此窗口中点击确定以创建方法。

        希望这会有所帮助!

        【讨论】:

          【解决方案6】:

          在 Eclipse Juno 中,默认情况下,ALT+SHIFT+S,R 打开 getter/setter 对话框。请注意,您必须按下所有 4 个键。

          【讨论】:

          • 你可以省略 SHIFT 部分,只做 ALT + S, R 。
          • 在 Eclipse Kepler 中不能省略 SHIFT
          • 您可以在 Eclipse Oxygen 中省略 SHIFT
          • 你不能在 Eclipse 2018-12 中忽略 SHIFT
          • 在 Spring Tool Suite 3 --> ALT + SHIFT + S(等待菜单打开)然后按 R
          【解决方案7】:

          我更喜欢先创建私有字段

          private String field;
          

          Eclipse 将自动突出显示该变量,方法是将光标放在新变量上,按 Ctrl + 1。然后它会为您提供创建 getter 和 setter 的菜单。

          我按 Ctrl + 1 是因为它对我认为您接下来想要的内容更智能。

          【讨论】:

            【解决方案8】:

            Eclipse > Source > 生成 Getter 和 Setter

            【讨论】:

              【解决方案9】:

              按 Alt+Shift+S+R...,然后只选择您必须生成 Getter 或 Setter 或两者的所有字段

              【讨论】:

                【解决方案10】:

                Mac OS 上是 Alt+Cmd+S,然后选择“...Getters and Setters”

                【讨论】:

                  【解决方案11】:

                  生成 Getter 和 Setter 的方法 -

                  1) Alt+Shift+S,然后R kbd>
                  2) 右键 -> Source -> 生成Getter & Setter
                  3) 转到 Source 菜单 -> 生成 Getter & Setter
                  4) 转到 Windows 菜单 -> 首选项 -> 常规 -> 键(在文本字段上写入生成 Getter 和 Setter)
                  5) 单击字段的错误灯泡 -> 创建 getter 和 setter ...
                  6) Ctrl+3 并在文本字段中写入getter & setter,然后选择选项Generate Getters & Setters

                  如果 Mac OS 按 Alt+cmd+S 然后选择 Getters & Setters

                  【讨论】:

                  • 我认为 1 这样会更容易一些:1)按 Alt + Shift + S,然后按 R
                  • 按 Ctrl-3 并随后直接键入“getter”从列表中丢失。比特定的快捷方式更容易记住,因为它适用于每个命令、视图等。
                  • @Bananeweizen - 谢谢
                  【解决方案12】:

                  右键单击要为其生成getter和setter的属性并选择

                  Source -> Generate Getters and Setters...
                  

                  【讨论】:

                    【解决方案13】:

                    1) 转到 Windows->Preferences->General->Keys

                    2) 选择command生成Getter和Setter

                    3) 在Binding按快捷键喜欢用(如Alt+Shift+G

                    4) 点击申请,一切顺利

                    【讨论】:

                      【解决方案14】:

                      所有其他答案都只关注 IDE 级别,这些并不是生成 getter 和 setter 的最有效和最优雅的方式。 如果你有几十个属性,相关的 getter 和 setter 方法会让你的类代码非常冗长。

                      我曾经用来自动生成getter和setter的最好方法是在你的java项目中使用项目lombok注解,lombok.jar会在你编译java代码时生成getter和setter方法。

                      您只需关注类属性/变量的命名和定义,其余的由 lombok 完成。这很容易维护您的代码。

                      例如,如果你想为age变量添加getter和setter方法,你只需添加两个lombok注解:

                      @Getter @Setter 
                      public int age = 10;
                      

                      这相当于这样的代码:

                      private int age = 10;
                      public int getAge() {
                          return age;
                      }
                      public void setAge(int age) {
                          this.age = age;
                      }
                      

                      您可以在此处找到有关龙目岛的更多详细信息:Project Lombok

                      【讨论】:

                      • 就是这样!非常感谢!实际上,您的答案应该是最重要的,因为 lombok 是唯一真正的解决方案,可以避免看到必须生成或编写的所有样板 Java 代码。谢谢!
                      • Project Lombok(或者至少是这个想法)应该是 Java 11 的一部分。我将 Kotlin 用于 Pojo 类只是为了逃避 getter setter 生成:/
                      【解决方案15】:

                      **在 Eclipse IDE 中

                      用于生成 setter 和 getter -> alt+shift+s+r 然后 Alt A 然后点击 ok;

                      只生成 getter ->alt+shift+s+r 然后按 g 然后点击 ok 按钮;

                      只生成setter ->alt+shift+s+r 然后按l然后点击ok按钮;**

                      【讨论】:

                        【解决方案16】:

                        有一个开源 jar 可用,称为 Lombok,您只需添加 jar,然后使用 @Getter & @Setter 注释您的 POJO,它会自动创建 getter 和 setter。

                        除此之外,我们还可以使用其他功能,例如 @ToString@EqualsAndHashCode 和其他很酷的东西,可以从您的应用程序中删除原始代码

                        【讨论】:

                          【解决方案17】:
                          1. 在 Eclipse 中打开类文件
                          2. 双击类名或突出显示它
                          3. 然后导航到源 -> 插入代码
                          4. 点击 Getter 和 Setter

                          它会打开一个弹出窗口来选择要为其生成 getter/setter 方法的字段。选择字段并单击“生成”按钮。

                          【讨论】:

                            【解决方案18】:

                            为您的 Pojo 使用 Project Lombok 或更好的 Kotlin。

                            (另外,将 Kotlin 添加到您的简历中;))

                            这个:

                            public class BaseVO {
                                protected Long id;
                            
                                @Override
                                public boolean equals(Object obj) {
                                    if (obj == null || id == null)
                                        return false;
                            
                                    if (obj instanceof BaseVO)
                                        return ((BaseVO) obj).getId().equals(id);
                            
                                    return false; 
                                }
                            
                                @Override
                                public int hashCode() {
                                    return id == null ? null : id.hashCode();
                                }
                                // getter setter here
                            }
                            
                            public class Subclass extends BaseVO {
                                protected String name;
                                protected String category;
                                // getter setter here
                            }
                            

                            会变成这样:

                            open class BaseVO(var id: Long? = null) {
                            
                                override fun hashCode(): Int {
                                    if (id != null)
                                        return id.hashCode()
                            
                                    return super.hashCode()
                                }
                            
                                override fun equals(other: Any?): Boolean {
                                    if (id == null || other == null || other !is BaseVO)
                                        return false
                            
                                    return id.hashCode() == other.id?.hashCode()
                                }
                            }
                            
                            @Suppress("unused")
                            class Subclass(
                                    var name: String? = null,
                                    var category: String? = null
                            ) : BaseVO()
                            

                            或者使用 Kotlin 的“数据”类。你最终编写的代码行数更少。

                            【讨论】:

                              【解决方案19】:
                              • 对于所有变量 ALT+SHIFT+S 然后 R 并选择所有按 ALT+A

                              • 对于单个变量将光标指向变量,然后按 CTRL+1 并从建议中选择第二个选项

                              【讨论】:

                                猜你喜欢
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 2012-08-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                • 1970-01-01
                                相关资源
                                最近更新 更多