【发布时间】:2014-08-17 16:34:48
【问题描述】:
无论该类是在解释器中还是在 Scala 代码文件中定义的,我都想获得一个简单的类名。您无法从解释器中定义的类中获得简单的名称(请参阅here)。结果,我尝试创建一个只获取完全限定名称的方法,将其拆分为.,然后获取最后一个字符串:
def simpleNameOf(i: AnyRef) = i.getClass.getName.split('.').last
然而,事情变得奇怪了。
scala> def simpleNameOf(i: AnyRef) = i.getClass.getName.split('.').last
simpleNameOf: (i: AnyRef)Stringscala> simpleNameOf(new Human)
res25: String = $read$Humanscala> var h = new Human
h: Human = Human@fdad4abscala> h.getClass.getName
res27: 字符串 = 人类scala> h.getClass.getName == "人类"
res28: Boolean = falsescala> h.getClass.getName.length
res29: Int = 44scala> h.getClass.getName.split('.')
res30: 数组 [字符串] = 数组($line102, $read$Human)scala> "人类".split('.')
res31: Array[String] = Array(Human)
那么来自getClass.getName 44 个字符的字符串 Human 到底有多长? $line102 和 $read$Human 是从哪里来的?
这是 Scala 2.10.4
【问题讨论】:
标签: scala