MyClass obj =" String"这可能在java?

时间:2017-04-04 12:26:43

标签: java

是否可以将字符串文字分配给Java中的对象?
像这样:

String strLiteral = "String value"; 
MyClass obj = "String"; // Is this possible 

3 个答案:

答案 0 :(得分:3)

您并未尝试将其分配给对象,而是尝试将其分配给MyClass类型的变量。

如果String与该类分配兼容,则可以执行此操作。例如:

Comparable c = "Foo";

没问题,因为StringComparable分配兼容,因为String实现了Comparable。该对象仍为String,只是我们通过Comparable类型的变量访问它。 (有关该概念的更多信息,请参阅What does it mean to “program to an interface”?。)

你无法做到:

class Foo {
}

// Doesn't work
Foo f = "Foo";

因为StringFoo不是分配兼容的。

答案 1 :(得分:0)

不,你不能,因为MyClass不是String的超类。

一种选择是在您的类上创建一个静态工厂方法fromString并使用如下:

MyClass obj = MyClass.fromString("String");

在此方法中,您可以定义从StringMyClass的转换。

答案 2 :(得分:-1)

String是Final Class,你不能扩展字符串类,也无法创建子类。因此,您无法将字符串分配给不同的类名。