Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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
MyClass obj=";“字符串”;这在java中可能吗?_Java - Fatal编程技术网

MyClass obj=";“字符串”;这在java中可能吗?

MyClass obj=";“字符串”;这在java中可能吗?,java,Java,可以在Java中为对象分配字符串文字吗? 像这样: String strLiteral = "String value"; MyClass obj = "String"; // Is this possible 您不是试图将其分配给对象,而是试图将其分配给类型为MyClass的变量 如果String的赋值与该类兼容,则可以这样做。例如: Comparable c = "Foo"; 很好,因为String赋值与Comparable兼容,因为String实现了Comparable。对象仍然是

可以在Java中为对象分配字符串文字吗?
像这样:

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

您不是试图将其分配给对象,而是试图将其分配给类型为
MyClass
的变量

如果
String
的赋值与该类兼容,则可以这样做。例如:

Comparable c = "Foo";
很好,因为
String
赋值与
Comparable
兼容,因为
String
实现了
Comparable
。对象仍然是一个
字符串
,只是我们通过类型为
Comparable
的变量来访问它。(有关该概念的更多信息,请参阅。)

你不能这样做:

class Foo {
}

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

因为
String
Foo

赋值不兼容,所以String是最终类,您不能扩展String类,也不能创建子类。因此您不能将字符串分配给不同的类名。

不,您不能,因为
MyClass
不是
string
的超类

一个选项是在类上创建一个静态工厂方法
fromString
,并像这样使用:

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

在该方法中,您可以定义从
字符串
MyClass
的转换。不,您不能指定用户定义的转换。您尝试过吗?它起作用了吗?您的错误是什么?
String strlateral=“String value”
是可能的,
MyClass obj=“String”
将不起作用,因为正如Jon Skeet所述,您无法指定用户定义的转换。你能得到的最接近的东西是
MyClass obj=new MyClass(“String”)
。这感觉像是一个X/Y问题:你想做X,你认为给
obj
(Y)分配一个字符串会让你做X,所以你问过Y。X是什么?我如何在java中创建自己的类似字符串的类?例如,字符串文字将在字符串池中创建,我们也可以将字符串文字指定为对象。
String
being
final
是不相关的,您无论如何不能将超类引用指定给子类变量(没有强制转换)。谢谢,我如何在java中创建自己的类似字符串的类?@NineeshCV:只需创建它,和其他班级一样。但是关于
String
有两件事是不能复制的:1。您不能向Java添加新的文本表单,这些表单必须在规范级别(以及从规范派生的所有级别)定义。2.您不能为您的类重写
+