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

时间:2011-08-03 01:03:01

标签: java eclipse code-generation setter

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

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

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

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

8 个答案:

答案 0 :(得分:33)

根据我上次的经验,我发现eclipse没有这样的功能。我能做的最多就是打开Type Hierarchy视图(在查看该类时按 F4 ),然后按该类的方法名称排序并复制所有setter以进行进一步编辑。

或者,您可以使用反射来找出此类的所有方法,并打印出setter调用,如下所示:

         try {
            Class c = Class.forName("your.class.name");
            Method m[] = c.getMethods();
            for (int i = 0; i < m.length; i++)
             if (m[i].getName().startsWith("set")){
                 System.out.println("instanceName."+m[i].getName()+"(\"valOne\");");
             }

         }
         catch (Throwable e) {
            System.err.println(e);
         }

答案 1 :(得分:8)

请参阅此问题:Generate all setXXX calls of a POJO in Eclipse?

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

哦,试着忽略仇敌!

答案 2 :(得分:2)

  

我不想这样做150次

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

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


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

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

(a)选择你的班级(并点击右键) (b)选择来源(Shift + Alt + S) (c)选择Getters and Setters 生成的弹出窗口(Generate getters&amp; setters)允许您选择ALL或Individual字段。

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

答案 5 :(得分:1)

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

Ctrl + Shift + A - &gt; eclipse块选择(这是魔术工具01)

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

Ctrl + Shift + X - &gt;大写(工具03)

我这是怎么做的

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

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

  3. 全选并放置单词集(工具01)  例如:setUser

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

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

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

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

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

    欢呼!

答案 6 :(得分:1)

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

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

答案 7 :(得分:0)

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

代码为here