6 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊
我認(rèn)為apache提供了一個(gè)更好的util類,它提供了獲取字符串的函數(shù)
ReflectionToStringBuilder.toString(object)

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
在Eclipse中,轉(zhuǎn)到您的班級(jí),右鍵單擊 - > source-> Generate toString()
;
它將覆蓋該toString()
方法并將打印該類的對(duì)象。

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
默認(rèn)情況下,Java中的每個(gè)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; }}
現(xiàn)在,當(dāng)您使用System.out.prtinln(personObj);
它打印person對(duì)象時(shí),將打印該人的名稱而不是classname和hashcode。
在第二種情況下,當(dāng)您嘗試打印數(shù)組時(shí),它會(huì)打印[Lcom.foo.Person;@28a418fc
Array類型及其哈希碼。
如果要打印人名,有很多方法。
您可以編寫自己的函數(shù)來迭代每個(gè)人并進(jìn)行打印
void printPersonArray(Person[] persons){ for(Person person: persons){ System.out.println(person); }}
您可以使用Arrays.toString()打印它。這對(duì)我來說似乎最簡單。
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貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
在intellij中,您可以通過按alt + inset自動(dòng)生成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 + '}'; }}
如您所見,它通過連接類的幾個(gè)屬性生成一個(gè)String,對(duì)于它將打印其值的基元,對(duì)于引用類型,它將使用它們的類類型(在本例中為Test2的字符串方法)。
添加回答
舉報(bào)