我想創建一個類型爲MulticastLock的變量,它是在Android框架內定義的內部類。Scala內部類 - 不是成員
但是,我收到一個錯誤,指出MulticastLock不是WifiManager的成員。
我需要在Scala中以不同的方式引用內部類嗎?
var multicastLock:android.net.wifi.WifiManager.MulticastLock = null
我想創建一個類型爲MulticastLock的變量,它是在Android框架內定義的內部類。Scala內部類 - 不是成員
但是,我收到一個錯誤,指出MulticastLock不是WifiManager的成員。
我需要在Scala中以不同的方式引用內部類嗎?
var multicastLock:android.net.wifi.WifiManager.MulticastLock = null
如果WifiManager
是類,那麼你需要使用#
,而不是.
。但請注意,這不僅僅是一個空閒的句法差異;當你有一個外部類的內部類時,它可能很重要其外部類來自哪個實例。 #
提醒您有這個新問題(X#Y
是屬於任何副本的內部類的類型,而不是特定的副本;如果x
是X
的實例,則x.Y
是內部類的類型該特定實例)。這裏還有其他一些問題涉及內部類的不同用例(例如Referring to the type of an inner class in Scala)。
簡而言之,是的 - 你要使用#
,而不是.
:
class A { class B }
val a : A.B = null
//錯誤:未發現:值A
val a : A#B = null
//工作
.
語法用於指代外部類的特定實例的成員:
val a = new A
val b : a.B = null
完美,感謝您的補充說明和鏈接。 – Steve 2012-01-09 16:54:38