繁体   English   中英

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

[英]Shortcut for calling all the setter methods on an object in Eclipse?

我想创建一个类的对象,然后使用setter方法设置其中的所有属性。 有超过150个setter方法,我确实想要键入它们中的每一个,甚至在dot中输入对象实例名称Object instance类型. 然后点击Eclipse的空格键给我建议,然后选择setter方法。 我不想这样做150次。

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

  • instanceName.setterOne( “瓦隆”);
  • instanceName.setterTwo( “瓦隆”);
  • instanceName.setterThree( “瓦隆”);

我不能在类中创建另一个构造函数,我不允许这样做

根据我上次的经验,我找不到eclipse有这样的功能。我能做的最多就是打开Type Hierarchy View(在查看该类时按F4 ),然后按该类的方法名称排序并复制所有塞特犬进一步编辑。

或者,您可以使用反射来查找此类的所有方法,并打印出setter调用。 假设这个类叫做Foo ,你可以这样:

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

看到这个问题: 在Eclipse中生成POJO的所有setXXX调用?

它有一种非常简单的方式来做你想做的事情。

哦,试着忽略仇敌!

我不想这样做150次

我不知道任何Eclipse功能可以帮助你。

你可以回过头来使用像emacs键盘宏或perl脚本这样笨重的东西来按摩Eclipse之外的源代码。


你的另一个选择(虽然它可能不会很有效......)是要求修改繁琐的API; 例如,支持“建设者”模式。

我有Eclipse 4.6.0 - 它有一个自动生成getter和setter的选项(不确定早期版本的Eclipse)。

(a)选择你的课程(和右键单击)(b)选择来源(Shift + Alt + S)(c)选择Getters和Setters生成的弹出窗口(Generate getters&setters)允许您选择ALL或Individual字段。

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

以下是我使用的一些提示 -

Ctrl + Shift + A - > eclipse块选择(这是魔法工具01)

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

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

我是怎么做的

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

  2. 选择所有首字母并将第一个字母设为大写(工具01/03)
    例如:用户

  3. 选择全部并放置单词集(工具01)Ex:setUser

  4. 排列好所有字段。 所以你可以直接使用块选择器

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

现在你准备好了所有的安装人员

如果要在括号内插入值,可以使用魔术工具02.查找并替换(稍微想一想,你会看到一个选项)

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

干杯!

如果您使用的是IntelliJ,请查看此插件:

https://plugins.jetbrains.com/plugin/9360-generateallsetter

鉴于你已经达到了这种状况,我会认真考虑重新设计你的课程。 在不了解这个课程或你的目标的情况下,我冒昧地认为几乎没有理由拥有150个单独的领域,特别是如果它们属于同一类型。 想想看 - 如果你已经处于这种困境中,将来维护这段代码有多容易?

如果字段都是相同类型,请考虑使用数组, ListMap (property-> value)。 如果它们有许多不同的类型,请考虑如何将它们分解为可以更容易管理的组件类。

我基于@Ken Chan anwser为这个问题创建了我自己的更通用的解决方案,它不仅设置了基本类型。 它远非完美,仍有一些可能是一些起点。

代码就在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM