获取包含类实例的类的运行时类型


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知道返回"Foo"呢?

def containingClassTypeName: String = {
  val st = Thread.currentThread().getStackTrace
  st(2).getClassName
}

这是一个可怕的黑客,但无论你想做什么。

相关内容

  • 没有找到相关文章

最新更新