2011-05-12 34 views
-3

我想創建我自己的類,類似於我可以像這樣使用的String類,如何在java中分配一個值?

MyClass mc =「testvalue」;

我很困惑如何做到這一點,在哪裏將「testvalue」分配給?

謝謝。

+0

這個問題還不清楚。 – Bozho 2011-05-12 15:58:53

+0

你將不得不更好地定義你想要做什麼 – amit 2011-05-12 15:58:57

回答

2
MyClass mc="testvalue"; 

這是不可能的,不管MyClass是什麼。 "testvalue"是一個字符串文字,而String是最後一個類(不能被擴展)。因此,上述構造不能用Java編譯。

+1

更不用說Java中沒有運算符重載。 – pickypg 2011-05-12 16:00:15

+1

雖然字符串確實是最終的,但這隻對確切的反例而言很重要String str = new MyClass();將不會工作,因爲字符串是最終的。 MyClass mc =「testvalue」;將永遠不會工作,因爲字符串不從MyClass繼承。它可以用於Object obj =「testvalue」; – amit 2011-05-12 16:02:49

+0

好吧,所以我忘了說「所以MyClass不能擴展字符串」。告訴我,但我認爲這很明顯 – 2011-05-12 17:44:45

0
MyClass mc="testvalue"; 

這裏的值是"testvalue"這是字符串,你試圖把它分配給一個引用變量。這是不允許的,mc假定持有至的MyClass一個對象的引用(或它的亞型)

可以將其分配給String的參考,例如

String str ="testValue"; 
2

的常見方法在Java中的類存儲值是創建成員變量的類,使用get/set方法讀取/他們/寫:

class YourClass{ 
    private String value; 

    public YourClass(String value){ 
    // Constructor 
    this.value = value; 
    } 

    public String getValue(){ 
    return value; 
    } 

    public void setValue(String new_value){ 
    this.value = new_value; 
    } 

} 

所以,你可以做這樣的事情:

YourClass yc = new YourClass("Your Value"); 
yc.getValue(); // Returns your Value 
vc.setValue("A new Value"); // Sets your Value 
+2

我認爲你的意思是* member *變量,而不是* global *變量。 – 2011-05-12 16:03:51

+0

對不起,糾正了這一點。 – 2011-05-12 16:10:16

0

由於Java既不支持隱式轉換,也不支持運算符重載,所以您需要實現構造函數或採用該字符串的靜態工廠方法。

您也可以使用預處理器路線來創建語言變體,但這完全是其他球類遊戲。

相關問題