35得票8回答
如何谈论伴生对象和常规对象?

我第一次教授Scala,我的学生们发现伴生对象中涉及的“双关语”非常令人困惑。考虑以下示例:class Stack { ... methods such as push/pop } object Stack { ... factory method(s) and possibly o...

13得票1回答
一个具有伴生对象的类和一个类和对象名称相同的类之间有什么区别?

Scala类的“伴生对象”可以看作是具有与类相同的完全限定名称(即相同的名称,在相同的包中)的单例对象。它们用于保存对于类的所有实例都通用的实用函数,作为Java中static方法的替代。 然而,在文档和问题的各个地方,它说伴生对象必须在同一编译单元中定义。例如,它们必须在同一文件中定义;不...

7得票3回答
我该如何从Java中引用伴生对象?

我有一个混合项目,包含 Java 和 Kotlin 类,我想知道如何在我的 Java 类中引用 companion objects。

119得票6回答
Kotlin:类中“object”和“companion object”的区别。

在 Kotlin 的类中,对象和伴生对象有什么区别? 示例:class MyClass { object Holder { //something } companion object { //something } } 我...

8得票3回答
如何以函数式编程的方式实现计数器

在尝试理解伴生对象时,我编写了以下代码来计算类被实例化的次数。我不得不使用“var”来保持计数。是否有一种“函数式编程”的方法来实现相同的任务,即使用不可变变量。 class C { C.counter+=1 def someCFunction = {println ("some C...

48得票6回答
在 Kotlin 中的伴生对象中访问应用程序上下文。

在Android Kotlin中,我们如何在伴生对象中访问应用程序上下文? 我有一个位于抽象类内部的伴生对象,我想要访问上下文以读取共享首选项,但是我无法获取上下文。 更新: 我正在一个Android库中使用这个东西,而且我正在处理的类是抽象的。

11得票2回答
在Scala中,我如何为一个在Java中定义的类定义一个伴生对象?

我想在由建模工具生成的Java类中添加隐式转换。因此,我想将它们添加到这些类的伴生对象中,以便编译器可以自动找到它们。但我不能在另一个文件中添加它们,因为伴生对象必须在同一文件中定义。有什么解决办法吗? 当然,我可以将所有隐式转换定义在另一个对象中,然后将其引入作用域,但这需要额外的导入。还...

121得票7回答
在Scala中,为什么要使用伴生对象?

是否存在需要为类创建伴生对象(单例)的情况?为什么我要创建一个名为Foo的类,并为其创建一个伴生对象呢?

12得票1回答
同伴对象中的柯里化案例类构造函数

在定义 case class时,默认的伴生对象拥有一个不错的 curried 方法,用于获取 case class 构造函数的柯里化版本:scala> case class Foo(a: String, b: Int) defined class Foo scala> Foo.c...

11得票2回答
何时使用伴生对象工厂而不是 new 关键字

许多Scala标准库中的类使用其伴生对象的apply()作为工厂方法。当像List(List(1))这样链接调用时,这通常很方便。另一方面,仍然可以使用new(new HashMap[Int, Int]())直接创建对象。 那是标准库。现在,在我的代码中,使用哪种方法更好:伴生对象工厂还是使...