6 回答
TA贡献1876条经验 获得超5个赞
我认为apache提供了一个更好的util类,它提供了获取字符串的函数
ReflectionToStringBuilder.toString(object)
TA贡献1865条经验 获得超7个赞
在Eclipse中,转到您的班级,右键单击 - > source-> Generate toString()
;
它将覆盖该toString()
方法并将打印该类的对象。
TA贡献1843条经验 获得超7个赞
默认情况下,Java中的每个Object都有toString()
输出ObjectType @HashCode的方法。
如果您想要更有意义的信息,那么您需要覆盖toString()
类中的方法。
public class Person { private String name; // constructor and getter/setter omitted // overridding toString() to print name public String toString(){ return name; }}
现在,当您使用System.out.prtinln(personObj);
它打印person对象时,将打印该人的名称而不是classname和hashcode。
在第二种情况下,当您尝试打印数组时,它会打印[Lcom.foo.Person;@28a418fc
Array类型及其哈希码。
如果要打印人名,有很多方法。
您可以编写自己的函数来迭代每个人并进行打印
void printPersonArray(Person[] persons){ for(Person person: persons){ System.out.println(person); }}
您可以使用Arrays.toString()打印它。这对我来说似乎最简单。
System.out.println(Arrays.toString(persons)); System.out.println(Arrays.deepToString(persons)); // for nested arrays
你可以用java 8方式打印它(使用流和方法引用)。
Arrays.stream(persons).forEach(System.out::println);
可能还有其他方式。希望这可以帮助。:)
TA贡献1818条经验 获得超3个赞
在intellij中,您可以通过按alt + inset自动生成toString方法,然后选择toString()这里是测试类的输出:
public class test {int a;char b;String c;Test2 test2;@Overridepublic String toString() { return "test{" + "a=" + a + ", b=" + b + ", c='" + c + '\'' + ", test2=" + test2 + '}'; }}
如您所见,它通过连接类的几个属性生成一个String,对于它将打印其值的基元,对于引用类型,它将使用它们的类类型(在本例中为Test2的字符串方法)。
添加回答
举报