我如何获得伴侣对象所代表的类?例如:
val user = User("something")
val userClazz = user.getClass //returns somepackage.User
现在,如果我有一个伴随用户对象:
object User {
def myClass = this.getClass //seems to return a different type of class somepackage.User$
}
我的问题是如何获得" true"案例类?我有一个反射的实例,这导致我得到一些奇怪的"私人"尝试在随播对象内使用this.getClass时的构造函数。
答案 0 :(得分:1)
您可以使用User
获取classOf[User]
的课程。每个(单身)object
都有自己的类。伴随对象User
不是类User
的实例。
答案 1 :(得分:1)
通常,您无法获得伴随类,因为该伴随类可能存在或可能不存在或已被类加载。除了反射之外,没有其他语言可以做到这一点。
推荐的方法是在伴随对象中声明一个返回类的方法,例如companionClass
-这可以通过对象扩展的接口来强制执行。
答案 2 :(得分:0)
讨厌回答我自己的问题,如果有人知道更好的方法,我很乐意将其他人认为是正确的,但这就是我现在想出来的黑客,它似乎让我想去的地方。< / p>
val clazzName = this.getClass.getName
val clazz = Class.forName(clazzName.substring(0, clazzName.length - 1))