2012-11-12 10 views
7

私はインターフェイスを実装するクラスがあります:いくつかの変数は、私はそれらにアクセスできるインタフェース内で宣言されている場合はJavaインタフェースを実装するクラスで宣言された変数にScalaからアクセスできないのはなぜですか? Javaでは

AlertDialog implements DialogInterface 

を:

AlertDialog.BUTTON_POSITIVE 

しかし、Scalaで上の行はコンパイルされません。 。隠されているようです。 Scalaでこれらの変数にアクセスする方法はありますか?新しいオブジェクトを作成したり、何か他のことをしたりする必要はありませんか?

答えて

2

AlertDialogクラスからこれらの変数にアクセスする方法はありませんが、インターフェイス自体をオブジェクトとして使用してアクセスできます。

DialogInterface.BUTTON_POSITIVE 
+1

分待ってください。あなたは質問を投稿する**と**同時に答えを?? – UmNyobe

+4

@UmNyobeこれは完全に素晴らしいことです。 http://meta.stackexchange.com/questions/12513/should-i-not-answer-my-own-questions –

+1

をご覧ください。あなた自身の質問に答えることができます。それはいいです。質問と回答を同じに投稿することは面倒です。プラス彼は彼が別の人であるかのように答えます:)。 – UmNyobe

14

はもう少し詳細を与えるために:

だから、直接インターフェースから変数にアクセスすることができ、これらはaccesedすることができない理由は、ジョージがインターフェイスで定義された静的メンバーについて話していることです。 Scalaには静的メンバーはありません。代わりに、objectが作成されます。これは、1つの実装を持つ通常のクラスです。 Javaインターフェイスから拡張する場合、静的なメンバーはコンパニオンobjectとして扱われるため、非静的メンバーのみが拡張されます。コンパニオンオブジェクトの名前は、インターフェイスと同じであるため、DialogInterface.BUTTON_POSITIVEという名前でアクセスできます。

関連する問題