Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Eclipse中调用对象上所有setter方法的快捷方式?_Java_Eclipse_Code Generation_Setter - Fatal编程技术网

Java 在Eclipse中调用对象上所有setter方法的快捷方式?

Java 在Eclipse中调用对象上所有setter方法的快捷方式?,java,eclipse,code-generation,setter,Java,Eclipse,Code Generation,Setter,我想在中创建一个类的对象,然后使用setter方法设置其中的所有属性。有150多种setter方法,我确实希望键入其中的每一种,甚至键入对象实例名称对象实例键入dot,然后点击Eclipse的空格键给我建议,然后选择setter方法。我不想这样做150次 因此,我在Eclipse中寻找某种快捷方式,允许您调用该方法上的所有setter。就像您键入实例名,Eclipse调用所有setter方法,例如 instanceName.setterOne(“valOne”) instanceName.se

我想在中创建一个类的对象,然后使用setter方法设置其中的所有属性。有150多种setter方法,我确实希望键入其中的每一种,甚至键入对象实例名称
对象实例
键入dot
,然后点击Eclipse的空格键给我建议,然后选择setter方法。我不想这样做150次

因此,我在Eclipse中寻找某种快捷方式,允许您调用该方法上的所有setter。就像您键入实例名,Eclipse调用所有setter方法,例如

  • instanceName.setterOne(“valOne”)
  • instanceName.setterTwo(“valOne”)
  • instanceName.setterTree(“valOne”)
我不能在类中创建另一个构造函数,我不允许这样做

我不想这样做150次

我不知道有什么Eclipse特性可以在这里帮助您

您可以退回到使用一些笨拙的东西,如emacs键盘宏或perl脚本来处理Eclipse之外的源代码



您的另一个选择(尽管可能不会有成效……)是要求修改繁琐的API;e、 g.支持“构建器”模式。

根据我上次的经验,我找不到eclipse有这样的功能。我能做的最多的就是打开
类型层次结构视图(查看该类时按F4键),然后按该类的方法名排序,并复制所有设置器以供进一步编辑

或者,您可以使用反射找出此类的所有方法,并打印setter调用。假设这个类被称为
Foo
,您可以有如下内容:

for (Method m : Foo.class.getMethods()) {
        if (m.getName().startsWith("set")) {
            System.out.println(String.format("instanceName.%s(\"valOne\");", m.getName()));
        }
}

我会认真考虑重新设计你的班级,因为你已经达到了这种情况。在不太了解这个类或您的目标的情况下,我敢说几乎没有理由拥有150个单独的字段,特别是如果它们是相同类型的。想想看——如果您已经处于这种困境,那么将来维护这段代码有多容易

如果字段都是相同类型,请考虑使用数组、<代码>列表>代码>或<代码> MAP>代码>(属性->值)。如果它们是多种多样的类型,请考虑如何将它们分解为更易于管理的组件类。

请参见以下问题:

它有一个伟大而简单的方法来做你想做的事情


哦,别理那些仇恨者

我有Eclipse4.6.0,它有一个自动生成getter和setter的选项(不确定早期版本的Eclipse)

(a) 选择您的类(然后右键单击) (b) 选择源(Shift+Alt+S) (c) 选择getter和setter 结果弹出窗口(生成getter和setter)允许您选择所有或单个字段


希望这有帮助(如果仍然相关)。

我基于anwser创建了自己的更通用的解决方案,它不仅设置了基本类型。这还远远不够完美,但对某些人来说,这可能是一个起点


代码是

以下是我使用的一些技巧-

Ctrl+Shift+A->eclipse块选择(这是神奇的工具01)

Ctrl+F->eclipse查找/查找和替换(魔法工具02)

Ctrl+Shift+X->大写(03号工具)

这是我做的事情

  • 块选择->选择所有字段名称(工具01) 例:用户

  • 选择所有首字母并将首字母大写(01/03工具)
    例:用户

  • 选择全部并放置单词集(01号工具) 例:setUser

  • 将所有字段对齐。因此,可以直接使用块选择器

  • 选择全部并设置“();” 例如:setUser()

  • 现在你们所有的二传手都准备好了

    如果要在括号内插入值,可以使用magic tool 02。查找并替换(稍作思考,您将看到一个选项)

    最后,从getter/setter设置中节省无聊的时间


    干杯

    如果您正在使用IntelliJ,请查看此插件:


    你的问题需要更详细地了解大局,因为你所说的事情对我来说毫无意义。这是一个课堂作业,实际上是为了强迫你学习反思吗?我想要一个理由来标记这一点,仅仅因为“不要因为愚蠢的原因而结束这个问题”这一点。接受挑战!请告诉我们导致这种情况的设计。据我所见,一个列表或地图可能可以代替这150个字段。。。”“权力不会腐蚀人;然而,愚人一旦掌握了权力,就会腐败权力“@simranNarula:我会用一句更贴切的话来匹配你的话:不要咬喂你的手。侮辱你请求帮助的社区不是明智之举。Emacs是我选择的文本编辑器,但键盘宏功能肯定很笨重。非常感谢。。这就是我要找的。。。我没有研究过思考。。。但不幸的是,有些人不明白有人在学习,这就是这个地方的目的……他们也忘记了在学习时问的问题。。。。你在这里问一个问题,人们围过来投票否决这个问题。。。就因为他们能做到。这里的大多数人缺乏常识……“权力不会腐蚀人;然而,傻瓜,如果他们进入权力的位置,就会腐蚀权力”F4对我来说是无价的:)从FBO到DTO的映射只需要10个设定者,但仍然很乏味:)(是的,我可以使用XSTREAM)谢谢你的帮助,但是这个类不是我写的,我不能修改它:(在大型组织(如生产、电信、银行公司)中,实体只有许多字段。这是否意味着bean没有字段