有没有一种方法可以在Eclipse中自动生成getter和setter?


256

我正在开发一个新Android项目(Java),并创建了一个包含大量变量的Object。由于我打算为所有这些添加吸气剂和吸气剂,因此我想知道:是否存在Eclipse在给定类中自动生成吸气剂和吸气剂的捷径?


1
听起来对我来说是个跟踪者...我以前只是在没有IDE的情况下进行所有Java编程,因此使用Eclipse对我来说仍然相对较新。
Phil

3
@krio-全世界都没有将Eclipse用于Java开发人员。我在IntelliJ中完成了大部分工作,并且开始使用Eclipse后发现自己会问很多类似的问题。
vcsjones

1
@ Phil,vcsjones-非常对不起,我很抱歉,但请查看一下--google.com.au/…-我猜stackoverflow说研究很重要
TeaCupApp 2011年

2
最快的方式:ctrl + 3 ggas
dellasavia 2015年

1
@Konstantin只是说要避免在同一个类中使用它们,因此this.getCount(),只要可以引用,就不要调用this.mCount。尽管这可能是一个成本更高的操作,但它是一种更干净的方法,可以通过getter和setter访问其他对象的变量。
Phil 2015年

Answers:


357

在所需类的源代码窗口中弹出上下文菜单(即右键单击)。然后选择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
Xdg

在Eclipse Mars.2版本(4.5.2)上运行良好。谢谢。
this.user3272243 '16

感谢您为我节省了大约一百万年的乏味!
杰伊·爱德华兹

11
您也可以使用键盘快捷键SHIFT+ ALT+ 访问此子菜单S,然后按来打开Generate Getters和Setters选项R
罗莎

有趣的是,我的回答如此流行,但是如今,我将使用Lombok,如以下其他人所述。
哈加·西布尔斯基

70

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


5
您可以省略SHIFT部分,也只需执行ALT + S,R。
杰森·惠勒

2
您不能SHIFT
错过

您可以忽略SHIFTEclipse Oxygen。
杰克·里斯

您不能SHIFT在Eclipse 2018-12中忽略。
Neph


41

所有其他答案仅集中在IDE级别上,这些不是生成getter和setter的最有效,最优雅的方法。 如果您有数十个属性,则相关的getter和setter方法将使您的类代码非常冗长。

我曾经用来自动生成getter和setter的最佳方法是在Java项目中使用项目lombok批注当您编译Java代码时,lombok.jar将生成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;
}

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


1
而已!非常感谢你!实际上,您的答案应该放在首位,因为lombok是避免看到一个人必须生成或编写的所有样板Java代码的唯一真正的解决方案。谢谢!
Stefan Endrullis '16

2
Lombok项目(或至少是这个主意)应该成为Java 11的一部分。我将Kotlin用于Pojo类只是为了逃避getter setter的产生:/
Wolf359

31

生成Getter和Setter的方法-

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

如果Mac OS按Alt + cmd + S,则选择Getters&Setters


2
我认为1这样会更容易:1)按Alt + Shift + S,然后按R
Paco Abato

1
列表中缺少按Ctrl-3并随后直接键入“ getter”的信息。与特定的快捷方式相比​​,记住起来容易得多,因为该快捷方式适用于每个命令,视图等。
Bananeweizen 2015年

@ Bananeweizen-谢谢
Deepak Gupta

11

右键单击->生成getter和setter可以很好地完成工作,但是如果要在Windows的eclipse中创建键盘快捷方式,则可以按照以下步骤操作:

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

希望这可以帮助!


9

当然。

在选定字段或类型的“源”菜单或上下文菜单中使用“生成获取器和设置器”,或者在类型中选择文本来打开对话框。“生成吸气剂和设置器”对话框显示所选类型的所有字段的吸气剂和设置器。方法按类型的字段分组。

请查看帮助文档以获取更多信息。


8

是。右键单击代码,您会弹出一个菜单;那里的“来源”,“生成Getters和Setters” 在它旁边,你可以看到快捷键,其键是Alt + Shift + S和R我的系统上。

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



7

我更喜欢先创建私有字段

private String field;

Eclipse将光标置于新变量上并按Ctrl + 1,从而自动突出显示该变量。它将为您提供创建吸气剂和吸气剂的菜单。

我按Ctrl + 1,因为它对我想接下来要显示的内容更加智能。






3

**在Eclipse Ide中

用于生成setter和getters-> alt + shift + s + r然后Alt A然后单击确定;

仅生成吸气剂-> alt + shift + s + r,然后按g,然后单击确定按钮;

仅生成设置器-> alt + shift + s + r,然后按l然后单击确定按钮; **



2

1)转到Windows->首选项->常规->键

2)选择command生成Getter和Setters

3)在中Binding要使用的快捷方式(例如Alt + Shift + G

4)单击“ 申请”,您就可以开始了


1
  1. 在Eclipse中打开类文件
  2. 双击班级名称或突出显示它
  3. 然后导航到Source-> Insert Code
  4. 单击Getter和Setter

它会打开一个弹出窗口,以选择要为其生成getter / setter方法的字段。选择字段,然后单击“生成”按钮。 在此处输入图片说明在此处输入图片说明


1

为您的Pojos使用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的“数据”类。您最终只需要编写更少的代码行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.