1

間違っているように見える次のコード行を書きましたが、実際にはコンパイルされます。

class A extends {}

A はどのクラスから拡張されますか?

4

2 に答える 2

6

実際extends {}には常に AnyRef コンストラクトに脱糖されます。これは のエイリアスですjava.lang.Object。たとえば、構造型付けでは次のように記述できます。

def test[A <: {def some: String}](a: A) = a

ここにwith{def some: String}のサブタイプがあります:AnyRefsome

test: [A <: AnyRef{def some: String}](a: A)A
于 2013-08-07T05:26:48.860 に答える
1

A は java.lang.Object から拡張されます。次のコードを scala インタープリターで試すことができます。

class A extends {}
val a = classOf[A].getSuperclass

出力は次のとおりです。

a: Class[_ >: A] = class java.lang.Object
于 2013-08-07T05:12:45.903 に答える