如何將物件轉換為字串
1. 概述
在本教程中,我們將探索將物件轉換為其 Java 字串表示形式的各種技術。
出於多種原因,將物件轉換為字串至關重要,從以使用者友好的格式顯示物件資訊到以可讀形式持久保存物件資料。
2.使用toString()
將物件轉換為字串的最直接方法是使用toString()
方法。 toString()
是Obje
ct
類別提供的內建方法,Obje ct 類別是所有 Java 物件的根類別。因此,該方法被所有類別繼承,並且它會傳回物件的String
表示形式。
但是, Object
類別中toString()
的預設實作資訊量不大,因為它傳回一個包含物件雜湊碼的字串,例如com.baeldung.objecttostring.Person@1f2a0679.
為了使這個方法對我們自己的自訂類別更有用,我們可以重寫它。透過提供我們自己的實現,我們可以傳回一個String
,以人類可讀的形式表示物件的資料和屬性。
以下是我們如何在自訂類別中重寫toString()
方法的範例:
public class Person {
private String name;
private int age;
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + '}';
}
}
在此範例中, Person
類別重寫toString()
方法以傳回包含人員name
和年齡的String
age.
我們可以透過在物件上呼叫toString()
方法來使用它:
@Test
public void givenObject_whenToString_thenConvert() {
Person person = new Person("Sarah", 28);
String expected = "Person{name='Sarah', age=28}";
String actual = person.toString();
assertEquals(expected, actual);
}
3.使用String.valueOf()
將物件轉換為String
另一種簡單方法是使用String.valueOf()
方法。這是String
類別提供的static
方法,用於傳回表示指定值的字串。此方法接受一個物件作為其參數並傳回該物件的字串表示形式。如果物件為null
,則傳回字串「 null
」 。
這是使用String.valueOf()
的範例:
@Test
public void givenObject_whenValueOf_thenConvert() {
Person person = new Person("Sarah", 28);
String expected = "Person{name='Sarah', age=28}";
String actual = String.valueOf(person);
assertEquals(expected, actual);
}
這會產生 person 物件的字串表示形式。
4. 使用串聯
我們也可以透過String
連接技術將物件轉換為String
。當使用加法 ( +
) 運算子將物件與空字串連接時,它會產生其字串表示形式:
@Test
public void givenObject_whenConcat_thenConvert() {
Person person = new Person("Sarah", 28);
String expected = "Person{name='Sarah', age=28}";
String actual = "" + person;
assertEquals(expected, actual);
}
5.使用commons-lang3函式庫
Apache Commons Lang 3 函式庫提供了操作基本 Java API 類別的功能。要利用 Commons Lang 3 庫,我們只需透過新增以下相依性從中央 Maven 儲存庫檢索它:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
我們可以使用該庫中的ToStringBuilder
類別來建立物件的自訂字串表示形式。 ToStringBuilder
類別允許我們指定要在字串表示形式中包含物件的哪些欄位。
以下是如何使用ToStringBuilder
將物件轉換為String
的範例:
public class Person {
private String name;
private int age;
public String toCustomString() {
return new ToStringBuilder(this, ToStringStyle.JSON_STYLE)
.append("name", name)
.append("age", age)
.toString();
}
}
在此範例中,我們使用ToStringBuilder
在toCustomString()
方法中為Person
物件建立自訂字串表示形式。我們指定要包含的欄位以及用於格式化輸出的ToStringStyle
(例如ToStringStyle.JSON_STYLE
):
@Test
public void givenObject_whenToStringBuilder_thenConvert() {
Person person = new Person("Sarah", 28);
String expected = "{\"name\":\"Sarah\",\"age\":28}";
String actual = person.toCustomString();
assertEquals(expected, actual);
}
六,結論
在本文中,我們探討了在 Java 中將物件轉換為String
的幾種方法。
方法的選擇取決於我們正在處理的物件的特定要求和複雜性。驗證產生的字串是否有效地傳達物件的資料並符合我們的預期用途至關重要。透過正確的方法,我們可以無縫地將物件轉換為字串,並提高 Java 應用程式的可讀性和可用性。
與往常一樣,完整的源代碼可以在 GitHub 上取得。