我最近去了Java面试,面试官问我一个我无法回答的问题。他问我如何创建一个类,其实例可以分配给String,就像字符串一样。请允许我解释一下:
假设我创建了一个类,MyClass和我创建了一个对象,比如说obj。作业应该是:
MyClass obj = "my Text";
我搜索了这类东西,却无法得到任何确切的答案。
答案 0 :(得分:7)
您说“已分配给字符串”,但您的代码示例显示已分配String
值。这是非常不同的事情。前者很简单:只需在toString()
中编写MyClass
方法即可。后者基本上是不可能的,因为String
是最后一类。
关于最后一点在技术上更具体:如果查看rules for assignment conversion,String
值只能分配给String
类型的变量或更广泛的引用类型。唯一更广泛的参考类型是Object
,CharSequence
,Serializable
和Comparable<String>
。 (斯蒂芬C的帽子提示)。
答案 1 :(得分:0)
我不认为你想做什么是可能的。
表达式"my Text"
相当于new String("my Text")
,所以实际上你要做的是:
MyClass obj = new String("my Text");
所以MyClass
必须是java.lang.String
的子类,但String
被声明为final
,这意味着明确禁止子类化。