What are the shortcut to Auto-generating toString Method in Eclipse?
为一些简单的类自动生成
我正在考虑生成类似下面的内容,该内容采用变量名称并生成一个
1 2 3 4 5 6 7 |
Eclipse 3.5.2(可能还有更早的版本)已经提供了此功能。如果在编辑器中右键单击,则会在"源"->"生成toString()..."下找到它。
要回答有关自动生成
我个人喜欢为所有对象实现toString方法,因为它有助于调试。
我会考虑使用Apache Commons ToStringBuilder。
您可以使用反射实现一个简单的toString方法,如下所示:
1 2 3 |
使用此方法,如果/当添加字段时,您将不必更新toString方法。
如果您使用lombok,则它们具有@ToString批注,它将为您生成toString。
之所以用它代替使用eclipse生成toString更好,是因为如果以后添加,删除或更改类的属性,还必须重新生成toString。如果您使用龙目岛,则不必这样做。
要添加到史蒂夫和唐的答案(+1):
使您的
如果可能的话,不要调用类的其他方法。至少,请确保您的
并且要注意愚蠢的exception-toString循环:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class MyClass { ... public String toString() { // BAD PRACTICE 1: this can throw NPE - just use field1 return" field1=" + field1.toString() +" extraData=" + getExtraData(); // BAD PRACTICE 2: potential exception-toString loop } public MyExtraData getExtraData() { try { .... do something } catch(Exception e) { throw new RuntimeException("error getting extradata -" + this.toString(),e); } } } |
在IntelliJ Idea中,您可以按alt + insert,将打开Generate弹出窗口;现在选择字段并单击确定按钮;而已。
进一步的提示:在"生成toString"对话框中,您可以通过单击模板组合框上的下拉菜单来选择模板。如果需要,您可以在此处选择StringBuffer或根据需要选择任何其他模板。玩以习惯。我喜欢 :)
生成toString()方法的快捷方式
刚刚注意到-在NetBeans IDE中,您可以通过选择要为
它的外观是:
1 2 3 4 |
它是调试的绝佳方法,不需要其他库。
添加toString()时要注意生成的文本的受众。一些框架使用toString()方法生成最终用户可见的文本(例如某些Web框架),而许多人使用toString()方法生成调试/开发人员信息。无论哪种方式,请确保您在toString实现中具有足够的唯一性以满足您的要求。
toString()的默认JDK实现会生成开发人员信息,因此,如果可能的话,通常使用我推荐的模式,但是如果您正在以不同的想法/期望进行项目,则可能会感到困惑...