首页 文章

Scala中的伴随对象和单例类之间有什么区别(Guice)

提问于
浏览
3

我想知道伴侣对象和用@Singleton声明的类有什么区别?

据我所知,你只能有两个实例 . 您可以在类中使用依赖注入,而不是使用对象,但除此之外我没有看到太多区别 .

4 回答

  • 1

    很相似的东西 . 对象是Scala允许您创建单例对象的方式 .

    要记住的事情:

    • Singleton类(Java Style)比Objects更容易测试 . 这是因为您可以在测试中创建不同的类,但是您永远不能创建多个对象

    • 对象不能有构造函数

    • 无法继承对象

  • 1

    好吧,简单地说 . 名为与类相同的单个对象称为伴随对象 . 还必须在与该类相同的源文件中定义伴随对象 . 你也用 Guice ? @Singleton是我猜的Guice .

  • 0

    另一个区别是序列化对Scala单例对象的引用使用自定义代码,该代码将始终解析相应类加载器中存在的该对象的单个实例 .

  • 1

    顾名思义,Scala中的Singleton在整个应用程序生命周期中都有一个实例 . 单例的示例是Nil,表示空List .

    另一方面,伴随对象是在Scala中创建的case类的辅助对象,您可以在其中放置自定义对象构造函数(apply),隐式转换,分解器(unapply) . 自动定义案例类时,会定义伴随对象 .

相关问题