【发布时间】:2015-10-13 00:43:56
【问题描述】:
String 的 simpleName 字面意思是“String”:
scala> "abc".getClass.getSimpleName
res0: String = String
这是有道理的,该类型的 simpleName 与我一开始用来组合的名称相同,但请考虑 Float:
scala> 32.2f
res4: Float = 32.2
scala> 23.2f.getClass.getSimpleName
res3: String = float
我期待 'Float' 但我得到了 '[f]loat' - 为什么 SimpleName 行为与 REPL 中的对象表示不一致?
加分 - 有没有一种方法可以恢复我最初使用的类型的确切名称,而无需任何繁琐的映射? REPL 调用对象以获取正确名称的方法是什么(使用大写字母 F)。
【问题讨论】:
-
对于
AnyVal(盒装原语)类型,简单名称是未装箱值的名称——“float”表示未装箱Float。 -
@Shadowlands
AnyVal值不一定是装箱的。这就是它存在的原因。
标签: scala