私はスカラにはとても新しいので、スカラとJavaの両方で書かれたプロジェクトに取り組まなければなりません。私はこのような構造で出会いました:スカラのクラスとオブジェクトを理解する
class SomeType{
//...
}
trait Trait1 extends scala.AnyRef{
}
trait Trait2 extends extends scala.AnyRef{
}
class MyClass(arg : SomeType) extends Trait1{
//...
}
object MyClass extends Trait2{
//...
}
これはまあまあです。私がこのanswerを読んでいる限り、object
は抽象メソッドを持つクラスとして考えることができます。私。私は(私の意見では)Class<T>
オブジェクトを使ってJavaでマッピングを定義することができました。
しかし、この例ではclass
とobject
は異なるtrait
Sを拡張します。それが私が本当に混乱していたものです。私はそれが何を意味し、なぜそれが使われたのか想像できません。
あなたの質問は何ですか? – marstran
抽象メソッドを持つクラスとしてオブジェクトを考えることはできません。オブジェクトは単なるシングルトンです。 – dk14
あなたが引用した答えは、オブジェクトを「暗黙的に定義されたクラスのシングルトン」と考えています。つまり、それもオブジェクトです。おそらく以下のリンクが役立ちます:http://docs.scala-lang.org/tutorials/tour/singleton-objects.html特に、「scalaに静的キーワードはありません」と言われています。だからオブジェクトは、Javaプログラマが静的だと思うところで使用されます。なぜ違いがありますか?彼らは思考の異なる学校から来ています。 ScalaはHaskellの影響を強く受けており、JavaはC/C++の影響を強く受けています。 –