2011-05-12 77 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既不支持隐式转换,也不支持运算符重载,所以您需要实现构造函数或采用该字符串的静态工厂方法。

您也可以使用预处理器路线来创建语言变体,但这完全是其他球类游戏。

相关问题