簡體   English   中英

用Java轉換對象

[英]Casting objects in Java

我在SO上看到了一些主題,但是沒有一個真正回答我的問題,所以這里是:

String s = "a string";
Object o = s;
s = String(o);  // EDIT this line was wrong
s = (String)o;  // EDIT Corrected line

現在,這可以正常編譯,但是會引發ClassCastException。 唯一的是,我認為有某種方法可以使此工作完成。 有沒有辦法將這種情況下的對象(例如字符串)變回原來的對象?

編輯:對不起大家,我急忙將我寫錯了。 我對它實際上如何工作即String(o)是正確的,但問題實際上是由於我試圖在方法中返回錯誤的對象而引起的。 對此感到非常抱歉。 感謝您確認那是您需要投射的方式!

謝謝

你要

s = (String)o;

也就是說,通過將對象類型放在括號中進行轉換。 請注意,您創建的對象始終是字符串。 但是,引用可以是對對象的引用,對字符串的引用等。

(我不相信您的示例會編譯,順便說一句。沒有合適的String構造函數)

String s = "a string";
Object o = s;
s = (String)o;

System.out.println(s);

除了Brian和Bruno的回答之外:您不是在代碼中強制轉換,而是通過其構造函數創建新的String。

創建對象o並將其分配給s時,將進行隱式轉換並將字符串轉換為對象。 發生這種情況時,您會丟失一些信息。 因此,當您嘗試將對象轉換回字符串時,您將嘗試引入它沒有的信息。 如果最初要創建oa字符串,然后將其轉換為對象,然后再次放下,那么您就不會有問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM