在Eclipse中自动生成toString方法的快捷方式是什么?

对于一些简单的类,自动生成toString方法是好还是坏?

我正在考虑生成类似下面的内容,它采用变量名称并生成一个toString方法,该方法打印名称后跟其值。

 private String name; private int age; private double height; public String toString(){ return String.format("Name: %s Age: %d Height %f", name, age, height); } 

Eclipse 3.5.2(可能还有早期版本)已经提供了这个function。 如果在编辑器中右键单击,您将在Source – > Generate toString()下找到它…

要回答你关于自动生成toString()是不好的问题,我的观点是它不是。 如果生成的代码与您自己编写的代码非常相似,那么为什么还要打字呢?

我个人喜欢为所有对象实现一个toString方法,因为它有助于调试。

我会研究使用Apache Commons ToStringBuilder 。

您可以使用reflection实现一个简单的toString方法,如下所示:

 public String toString() { return ToStringBuilder.reflectionToString(this); } 

使用此方法,如果/添加字段,则不必更新toString方法。

如果你使用lombok他们有一个@ToString注释,它会为你生成toString。

之所以使用它而不是使用eclipse生成toString更好的原因是,如果稍后添加,删除或更改类的属性,则还必须重新生成toString。 如果你使用lombok,你不必这样做。

添加史蒂夫和唐的答案(+1为他们):

使你的toString()方法变得简单,确保它不会触发预期(尤其要注意可能为null的字段)。

如果可能,请不要调用您class级的其他方法。 至少,请确保您的toString()方法不会修改您的对象。

并注意愚蠢的exceptiontoString循环:

 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); } } } 

生成toString()方法的快捷方式


  1. Alt + Shift + S + S (双)
  2. 右键单击 – > Source – > Generate toString()…
  3. 转到源菜单 – >生成toString()…
  4. 转到Windows菜单 – >首选项 – >常规 – >键(在文本字段上写入生成toString)

在为生成的文本的受众添加toString()时要明确。 一些框架使用toString()方法生成最终用户可见文本(例如某些Web框架),而许多人使用toString()方法生成调试/开发人员信息。 无论哪种方式,请确保在toString实现中具有足够的唯一性以满足您的要求。

toString()的默认JDK实现会生成开发人员信息,因此通常我推荐的模式如果可能,但如果您正在处理具有不同想法/期望的项目,您可能会感到困惑……

刚刚注意到 – 在NetBeans IDE中,您可以通过选择要生成它的字段来生成toString()方法,以便right click->insert code或使用快捷键ALT+INSERT然后选择toString()。

看起来的方式是:

 @Override public String toString() { return "ClassName{"+"fieldName="+fieldName+'}'; } 

它是调试的好方法,不需要额外的库。

在IntelliJ Idea中你可以按alt + insert,Generate弹出窗口会打开; 现在选择字段并单击“确定”按钮; 而已。

按alt + insert生成弹出窗口

选择字段并保留默认模板

生成的字符串函数

进一步提示:在Generate toString对话框中,通过单击模板combobox中的下拉菜单,您可以选择模板。 如果需要,您可以在此处根据需要选择StringBuffer或任何其他模板。 玩它来习惯。 我喜欢 :)