Scala中的抽象静态方法

Kev*_* Li 8 abstract-class static-methods scala

我已经阅读了这篇相关文章,但没有太多具体的答案(或多或少的语言设计不好): 为什么静态方法不能在Java中抽象化

我有点像Scala的新人,这可能吗(可能有特征或什么)?

我尝试让我的基类扩展一个特征,但是当我真的希望它们需要在伴随对象中实现时,需要子类来实现抽象静态方法作为成员方法.

Mat*_*ell 6

Scala [*]中没有静态方法,所以你的问题没有实际意义.

但是,您可以通过使用特征扩展对象来获得所需内容:

scala> trait A { def foo(): Int }
defined trait A

scala> object C extends A { def foo(): Int = 5 }
defined module C

scala> C.foo
res0: Int = 5
Run Code Online (Sandbox Code Playgroud)

这可能会做你想要的.实际上没有任何方法可以强制在类的伴随对象中实现某些东西.伴随对象可能不存在.

[*]从技术上讲,有,但这更多的是一个实现细节,而不是整体哲学.请参阅scala中编译为静态方法的伴随对象中的方法?

  • 实际上,comanion对象的方法可以看作是类的静态方法. (2认同)
  • @Nicolas是的,类中有一个静态转发器,但正如我所说的,这更像是一个实现细节,以帮助与Java互操作.Scala语言本身没有静态方法的概念.它更像是一个单身人士. (2认同)