簡體   English   中英

隨播對象的類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM