在Scala中返回“object”

4

我有点不熟悉scala。当我尝试返回对象类型时遇到了麻烦。

这是代码。

它显示“错误:未找到类型A”

object A{}

object B {
  def getInstance() : A = {
    return A
  }
}

如果我使用类实例进行类似的操作,就不会出现任何问题。
class A{}

object B {
  def getInstance() : A = {
    return new A
  }
}

据我所知,对象类型是类的单例实例。这里我有什么疏漏吗?
2个回答

4

编译器会抱怨找不到类型A,因为在您的情况下,A是对象的名称而不是类型,请使用A.type来引用类型,例如:

object A

object B {
  def getInstance: A.type = A
}

只是想补充一下,使用类型推断时,您实际上可以省略返回类型并仅编写 def getInstance = A - NIA

3

因为object是单例,它不定义一个type,而是定义一个值。

如果你看一下Java的等效方式,在使用scalaobject时会产生:

A$ class //
A$.MODULE$ // singleton instance definition

然而,type被遮蔽并且可以通过A.type访问。

在Scala中,使用return也不是必需的。块中的最后一个语句位置自动解释为return值。

class A{}

object B {
  def getInstance() : A = new A
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接