0
ではなく、のinstanceof条件を評価しようとすると、Groovy 2.4.7,1.6.0 JVM内で予期しなかった動作が検出されました。要約でGroovy "not instanceof"特異性
:私は、xがない整数のインスタンスしかしFoo.bar()がfalseを返しているので、Foo.bar()がtrueを返すだろうと予想するでしょう
class Foo {
static Boolean bar() {
String x = "Personally, I don't really like King Crimson"
return (!x instanceof Integer)
}
}
。これとは対照的に、次のtrueを返します:
class Foo {
static Boolean bar() {
String x = "Personally, I don't really like King Crimson"
return !(x instanceof Integer)
}
}
問題は学術的ですが、好奇心のうち:これは言語のバグであるか、私が動作するようになっているかinstanceofは誤解していますか?
(!x) instanceof Integer
をだから、ブール(!'Hello'
に文字列を変換しています文字列はいくつかのテキストが含まれているようfalse
である:それは実際にチェックしていますので
おかげで、期待する答えを与えます知っている。 –