是否有任何未來的問題,如果我的toString返回字符串的靜態參考: -toString爲每個特定類的對象返回相同的字符串?
public static String example = "any problem";
@Override
public String toString() {
// TODO Auto-generated method stub
return example;
}
是否有任何未來的問題,如果我的toString返回字符串的靜態參考: -toString爲每個特定類的對象返回相同的字符串?
public static String example = "any problem";
@Override
public String toString() {
// TODO Auto-generated method stub
return example;
}
因爲字符串是不可變的,所以沒有調用者可以改變任何其他調用者具有的基礎字符串引用;因此它是安全的。然而,它並不是非常有用,因爲該類的所有實例都共享此值 - 爲什麼不使用return this.getClass().getName();
(如果這是您想要的)?
即使我不知道爲什麼,我的朋友的發展負責人要求他這樣做,而且因爲我的同班同學的對象不同了,所以我認爲他最終可能會陷入混亂,但現在沒關係..謝謝! –
不,這是完全正常的。我認爲,爲清楚起見,我將使用以下方法來強調它是靜態的,不應該被改變(與你的實際的類名稱替換ClassName
):
public static final String example = "any problem";
@Override
public String toString() {
return ClassName.example;
}
否則,雖然它的罰款。我不完全確定你爲什麼想要爲每個實例返回相同的toString()
;理想情況下,它應該唯一地代表一個類的不同實例,如果它適合你的情況。
小旁註:我刪除了// TODO
評論。
沒有問題,但是toString方法用於表示對象狀態,而不是類的狀態,所以您可能需要重新考慮toString實現。此外,你的字符串是公開的,任何人都可以修改。
如果您問是否在稍後修改變量時遇到問題,答案是否定的。您可以修改靜態變量。
沒有@Chris Ogle這是關於區分對象..感謝。 –
你確實意識到,當你試圖打印這個類的實例的'toString()'時,你會總是得到相同的輸出。這樣你就無法區分這些實例(至少在試圖打印它們時)。 – SudoRahul
不,這可能不是很有用。 – Henry
爲了得到一個相同的字符串,你爲什麼要調用一個對象函數,你可以簡單地在你的代碼中硬編碼 –