![](/img/trans.png)
[英]Create a companion object that mixes in a trait that defines a method which returns an object of the object's companion class
[英]Companion object's class
我如何獲得伴隨對象代表的類? 例如:
val user = User("something")
val userClazz = user.getClass //returns somepackage.User
現在,如果我有一個伴隨的User對象:
object User {
def myClass = this.getClass //seems to return a different type of class somepackage.User$
}
我的問題是如何獲得“真實的”案例類類? 我有一個帶有反射的實例,該實例使我在嘗試在伴隨對象內部使用this.getClass時得到一些奇怪的“私有”構造函數。
您可以使用classOf[User]
獲得User
類。 每個(單個) object
都有其自己的類。 隨播對象User
不是User
類的實例。
通常,您無法獲得伴隨類,因為伴隨類可能存在或可能不存在或已被加載。 除了反思之外,沒有其他語言可以做到這一點。
推薦的方法是在伴隨對象中聲明一個返回類的方法,例如, companionClass
可以使用對象擴展的接口來強制執行此方法。
討厭回答我自己的問題,如果有人知道更好的方法,我很樂意將其他人標記為正確的人,但這是我目前想出的辦法,它似乎可以使我找到想要去的地方。
val clazzName = this.getClass.getName
val clazz = Class.forName(clazzName.substring(0, clazzName.length - 1))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.