是否可以将字符串文字分配给Java中的对象?
像这样:
String strLiteral = "String value";
MyClass obj = "String"; // Is this possible
答案 0 :(得分:3)
您并未尝试将其分配给对象,而是尝试将其分配给MyClass
类型的变量。
如果String
与该类分配兼容,则可以执行此操作。例如:
Comparable c = "Foo";
没问题,因为String
与Comparable
分配兼容,因为String
实现了Comparable
。该对象仍为String
,只是我们通过Comparable
类型的变量访问它。 (有关该概念的更多信息,请参阅What does it mean to “program to an interface”?。)
你无法做到:
class Foo {
}
// Doesn't work
Foo f = "Foo";
因为String
与Foo
不是分配兼容的。
答案 1 :(得分:0)
不,你不能,因为MyClass
不是String
的超类。
一种选择是在您的类上创建一个静态工厂方法fromString
并使用如下:
MyClass obj = MyClass.fromString("String");
在此方法中,您可以定义从String
到MyClass
的转换。
答案 2 :(得分:-1)
String是Final Class,你不能扩展字符串类,也无法创建子类。因此,您无法将字符串分配给不同的类名。