获取包含我的 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,但无论你想做什么都是如此。