亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在不獲取“SomeType @ 2f92e0f4”的情況下打印我的Java對象?

如何在不獲取“SomeType @ 2f92e0f4”的情況下打印我的Java對象?

largeQ 2019-05-21 13:49:12
如何在不獲取“SomeType @ 2f92e0f4”的情況下打印我的Java對象?我有一個類定義如下:public class Person {  private String name;  // constructor and getter/setter omitted}我試圖打印我的班級實例:System.out.println(myPerson);但我得到了以下輸出:com.foo.Person@2f92e0f4。當我嘗試打印一個Person對象數組時發生了類似的事情:Person[] people = //...System.out.println(people); 我得到了輸出: [Lcom.foo.Person;@28a418fc這個輸出是什么意思?如何更改此輸出以使其包含我的人名?我如何打印我的對象集合?
查看完整描述

6 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

我認為apache提供了一個更好的util類,它提供了獲取字符串的函數

ReflectionToStringBuilder.toString(object)


查看完整回答
反對 回復 2019-05-21
?
莫回無

TA貢獻1865條經驗 獲得超7個贊

在Eclipse中,轉到您的班級,右鍵單擊 - > source-> Generate toString();

它將覆蓋該toString()方法并將打印該類的對象。


查看完整回答
反對 回復 2019-05-21
?
藍山帝景

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

可能還有其他方式。希望這可以幫助。:)


查看完整回答
反對 回復 2019-05-21
?
泛舟湖上清波郎朗

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的字符串方法)。


查看完整回答
反對 回復 2019-05-21
  • 6 回答
  • 0 關注
  • 1244 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號