【发布时间】:2017-02-02 13:12:49
【问题描述】:
在面向对象的语言中,新对象的创建是通过使用 new 关键字(因为 java 中的内存分配是动态完成的)。
即使 String 是一个类,如何在没有 new 关键字的情况下创建它的对象?
即使它使用字符串池,我也无法清楚地理解它: “可以创建一个用户定义的类,我们可以像String一样直接初始化变量”
【问题讨论】:
-
不,不是。编译器以一种特殊的方式处理
String literals,这是其他对象无法做到的(自动装箱的原语除外)。 -
如果你真的想要做这样的事情,你可以切换到 Scala(另一种 JVM 语言),并创建一个隐式类,它会自动将某些上下文中的字符串转换为班级。不过,我会质疑为什么这是必要的。
-
@Kayaman (nit-picking) 也可以用于 Lambdas... [:-)
-
@CarlosHeuberger 没错,我本来打算“不可能”,但后来我开始思考,好吧,思考让我以前遇到过麻烦。