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;@28a418fcArray類型及其哈希碼。
如果要打印人名,有很多方法。
您可以編寫自己的函數來迭代每個人并進行打印
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的字符串方法)。
添加回答
舉報
