2012-01-09 13 views
3

MulticastLockという変数を作成しようとしています。この変数は、Androidフレームワーク内で定義された内部クラスです。Scalaインナークラス - メンバーではありません

ただし、MulticastLockがWifiManagerのメンバーではないことを示すエラーが表示されます。

Scalaで内部クラスを別の方法で参照する必要がありますか?

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

答えて

6

WifiManagerクラスある場合は、#の代わり.を使用する必要があります。しかし、これは単なる構文上の違いではないことに注意してください。あなたが外部クラスの内部クラスを持っている場合は、外部クラスのインスタンスがどのようなものかは重要です。#は、この新しい問題があることを警告します(X#Yは、特定のコピーではなく、コピーに属している内部クラスの型です)。の場合は、x.Yが内部クラスの型です。その特定のインスタンス)。内部クラスのさまざまな使用例(例えば、Referring to the type of an inner class in Scala)に対処する他の質問があります。要するに

+0

詳細な説明とリンクをありがとうございます。 – Steve

3

、はい - あなたは.の代わりに#を使用したいと思う:

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

//エラー:見つかりません:値が

val a : A#B = null 

//は

の作品.の構文は、外部クラスの特定のインスタンスのメンバーを参照するために使用されます。

val a = new A 
val b : a.B = null 
関連する問題