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