5
我想計算一個Scala類的包名。Scala反射派生包名
以下作品的代碼,但似乎有點冗長
def packagename(cls:ru.ClassSymbol):String = {
def innerPackageName(cls:JavaUniverse#Symbol):List[JavaUniverse#Name] = {
if(cls.owner != null && cls.owner.isPackage ) {
List(cls.name) ::: innerPackageName(cls.owner)
}
else {
List(cls.name)
}
}
val owner: JavaUniverse#Symbol = cls.owner
innerPackageName(owner).filterNot{_.toString == "<root>"}.reverse.mkString(":")
}
有沒有更好的方式來做到這一點?
感謝您的反饋 –
一個問題,我怎麼獲得一個'TermName'似乎在scala.reflect.internal(我在scala 2.10.3中)舉行 –
爲了讓它編譯,我重寫了它,像這樣:https://gist.github.com/picsolvebryan/8707151 –