Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类赋值字符串_Java - Fatal编程技术网

Java 类赋值字符串

Java 类赋值字符串,java,Java,我最近参加了一次Java面试,面试官问了我一个我无法回答的问题。他问我如何创建一个类,该类的实例可以像字符串一样分配给字符串。请允许我解释: 假设我创建了一个类,MyClass,然后我创建了它的一个对象,比如obj。任务应包括: MyClass obj = "my Text"; 我搜索了这类东西,但没有得到任何精确的答案。您说“分配给字符串”,但您的代码示例显示分配了字符串值。这些是非常不同的事情。前者很简单:只需在MyClass中编写一个toString()方法。后者基本上是不可能的,因为S

我最近参加了一次Java面试,面试官问了我一个我无法回答的问题。他问我如何创建一个类,该类的实例可以像字符串一样分配给字符串。请允许我解释:

假设我创建了一个类,MyClass,然后我创建了它的一个对象,比如obj。任务应包括:

MyClass obj = "my Text";
我搜索了这类东西,但没有得到任何精确的答案。

您说“分配给字符串”,但您的代码示例显示分配了
字符串
值。这些是非常不同的事情。前者很简单:只需在
MyClass
中编写一个
toString()
方法。后者基本上是不可能的,因为
String
是最后一个类


关于最后一点,更严格地说:如果您查看,一个
字符串
值只能分配给
字符串
类型的变量或一些更广泛的引用类型。唯一更广泛的参考类型是
对象
字符序列
可序列化
可比较
。(向斯蒂芬C致敬)。

我认为你想做的事是不可能的

表达式
“我的文本”
相当于
新字符串(“我的文本”)
,因此实际上您要做的是:

MyClass obj = new String("my Text");

所以
MyClass
必须是
java.lang.String
的子类,但是
String
被声明为
final
,这意味着子类是明确禁止的。

是的,我怀疑这就是他们的意思,尽管从技术意义上讲,你并不是真的“将实例分配给字符串”(部分原因是这在技术上没有意义……。“唯一更广泛的引用类型是Object。”-或
CharSequence
Comparable
Serializable
@StephenC-很好。更新我的答案。“我的文本”相当于新字符串(“我的文本”)——不完全一样。编译时间常数
“我的文本”
将被插入,而字符串表达式
新字符串(“我的文本”)
将不是插入的字符串。