4

yが厳密にbarのインスタンスであり、 fooではないことを確認する必要があります。Scalaでこれを行うにはどうすればよいですか?

trait foo {}

trait bar extends foo {}

val x = new foo {}
val y = new bar {}

x.isInstanceOf[foo] // true
x.isInstanceOf[bar] // false

y.isInstanceOf[bar] // true
y.isInstanceOf[foo] // true (but I want it to return false)
4

2 に答える 2

3

getClass新しいインスタンスを作成するだけで機能します。しかし、新しい匿名クラスとそれらのインスタンスを作成しています。

それらの場合、foo および bar との関係はまったく同じです。それらはスーパークラスです。

于 2015-05-03T20:16:10.797 に答える