1

タイトルは基本的にそれを言います。

new Object {def foo = "bar"}たとえば、isInstanceOf[<structural_type_here>]呼び出しでのタイプを使用する方法はありますか?

4

2 に答える 2

3

構造タイプはでは機能しませんisInstanceOf。同様に、構造型とのパターンの一致は無意味です(常に一致します)。

これは通常、型消去のせいですが、JVMは構造型を理解しないため、消去がない場合でも機能しません。

一方、Scalaは、構造型チェックを消去によって機能させるのに十分なほど賢いものであった可能性があります。

于 2011-01-30T22:37:29.433 に答える
3

タイプエイリアスを使用できると言いたいです:

type HasFooMethod = { def foo: String }
val v = new Object {def foo = "bar"}
v.isInstanceOf[HasFooMethod]

しかし、消去のおかげで、それは常に true を返します。

したがって、リフレクションを使用するか、構造型をパラメーターとして取るメソッドにオブジェクトを渡してみてください。有効でない場合、コンパイラーはエラーになります。

于 2011-01-30T19:25:07.883 に答える