获取包含我的 class 实例的 class 的运行时类型
Get runtime type of class containing instance of my class
object GetTypeNameOfClassContainingSomeInstance {
implicit class GetsTypeNameOfContainingClass(x: Any) {
def containingClassTypeName: String = ???
}
}
class Foo {
import GetTypeNameOfClassContainingSomeInstance._
def foo(x: Any): Unit = {
println(s"${x.containingClassTypeName} owns this ${x.getClass}: $x")
// should print something like "Foo owns this <class of x>: x"
}
}
我怎样才能做到 containingClassTypeName
足够了解 return "Foo"
?
def containingClassTypeName: String = {
val st = Thread.currentThread().getStackTrace
st(2).getClassName
}
这是一个糟糕的 hack,但无论你想做什么都是如此。
object GetTypeNameOfClassContainingSomeInstance {
implicit class GetsTypeNameOfContainingClass(x: Any) {
def containingClassTypeName: String = ???
}
}
class Foo {
import GetTypeNameOfClassContainingSomeInstance._
def foo(x: Any): Unit = {
println(s"${x.containingClassTypeName} owns this ${x.getClass}: $x")
// should print something like "Foo owns this <class of x>: x"
}
}
我怎样才能做到 containingClassTypeName
足够了解 return "Foo"
?
def containingClassTypeName: String = {
val st = Thread.currentThread().getStackTrace
st(2).getClassName
}
这是一个糟糕的 hack,但无论你想做什么都是如此。