我想创建一个类的对象,然后使用setter方法设置其中的所有属性。有超过150个setter方法,我确实想要键入每个方法,甚至键入点Object instance
中的对象实例名称.
类型,然后点击Eclipse的空格键给我建议和然后去选择setter方法。我不想这样做150次。
因此,我在Eclipse中寻找某种快捷方式,允许您调用方法上的所有setter。就像你输入实例名称一样,Eclipse会调用所有的setter方法,例如
我无法在类中创建另一个构造函数,我不允许这样做
答案 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)
答案 2 :(得分:2)
我不想这样做150次
我不知道任何可以帮助你的Eclipse功能。
你可以放弃使用像emacs键盘宏或perl脚本这样笨重的东西来按摩Eclipse 之外的源代码。
您的另一个选择(虽然它可能不会有效......)是要求修改繁琐的API;例如支持“建设者”模式。
答案 3 :(得分:1)
鉴于你已达到这种状况,我会认真考虑重新设计你的课程。在不了解这个课程或你的目标的情况下,我冒昧地认为几乎没有理由拥有150个单独的领域,特别是如果它们属于同一类型。想想看 - 如果你已经处于这种困境中,将来维护这段代码有多容易?
如果字段的类型相同,请考虑使用数组List
或Map
(属性 - >值)。如果它们有多种不同的类型,请考虑如何将它们分解为可以更容易管理的组件类。
答案 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)
我这是怎么做的
块选择 - &gt;选择所有字段名称(工具01) 例如:用户
选择所有首字母并将第一个字母设为大写(工具01/03)
例如:用户
全选并放置单词集(工具01) 例如:setUser
很好地排列所有字段。所以你可以直接使用块选择器
选择全部并设置“();” 例如:setUser();
现在你准备好了所有的安装人员
如果要在括号内插入值,可以使用魔术工具02.查找并替换(稍微想一想,你会看到一个选项)
最后,从getter / setters设置中节省您的无聊时间。
欢呼!答案 6 :(得分:1)
如果您正在使用IntelliJ,请查看此插件:
答案 7 :(得分:0)