2010-12-29 4 views

答えて

4

でなければなりませんので、パッケージオブジェクトは、この点で、通常のオブジェクトのように動作しない理由を見ていないが、提案domain$Foo$.MODULE$は動作しません。 domain.package$Foo$.MODULE$を使用する必要があります。

そして、それはScalaのクラスを考えるなどのオブジェクト、メソッド、のために少し違う:

package object domain { 
    object foo 
    def bar = 42 
    val baz = 1.0 
} 

あなたが好きなJavaでfoobarbazにアクセスすることができます。私はでしたが

domain.package$foo$.MODULE$ 
domain.package$.MODULE$.bar() 
domain.package$.MODULE$.baz() 

これを理解しようとすると、スカラがpackageという名前のクラスを生成するので、私たちは困っていると思っていました。もちろん、Javaでインポートすることはできません。幸いにも、インポートできるのはpackage$のコンパニオンオブジェクトだけです。

0

Scalaライブラリのオブジェクト内のオブジェクトを見ると、 scala.math.Ordering.Booleanの場合は、scala.math.Ordering$Boolean$.MODULE$を使用してJavaから取得できます。私はあなたのFooインスタンスはおそらくこれは、Scalaの2.8.1のように変更しましたdomain$Foo$.MODULE$

関連する問題