【问题标题】:Scala Inner Class - Not a MemberScala 内部类 - 不是成员
【发布时间】:2012-01-09 16:38:53
【问题描述】:

我正在尝试创建一个MulticastLock 类型的变量,它是在Android 框架中定义的一个内部类。

但是,我收到一条错误消息,指出 MulticastLock 不是 WifiManager 的成员。

我需要在 Scala 中以不同的方式引用内部类吗?

var multicastLock:android.net.wifi.WifiManager.MulticastLock = null 

【问题讨论】:

    标签: android scala


    【解决方案1】:

    如果WifiManager 是一个,那么您需要使用# 而不是.。但请注意,这不仅仅是一个闲置的句法差异;当你有一个外部类的内部类时,它来自外部类的哪个实例可能很重要。 # 提醒您注意存在这个新问题(X#Y 是属于任何副本的内部类的类型,而不是特定副本;如果 xX 的实例,则 @ 987654329@ 是该特定实例的内部类的类型)。这里还有其他问题涉及内部类的不同用例(例如Referring to the type of an inner class in Scala)。

    【讨论】:

      【解决方案2】:

      简而言之,是的 - 您需要使用 # 而不是 .

      class A { class B }
      val a : A.B = null
      

      // 错误:未找到:值 A

      val a : A#B = null
      

      // 有效

      . 语法用于引用外部类的特定实例的成员:

      val a = new A
      val b : a.B = null
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-01
        • 2016-09-17
        • 1970-01-01
        • 1970-01-01
        • 2016-04-08
        相关资源
        最近更新 更多