Ответ 1
Это:
" " + obj instanceof Object
оценивается как:
(" " + obj ) instanceof Object
и " " + obj
- это действительно непустая строка, которая является экземпляром Object
.
Когда я компилирую и запускаю этот код:
public class Testing {
public static void main(String... args) {
Object obj = null;
if (obj instanceof Object) {
System.out.println("returned true");
} else {
System.out.println("returned false");
}
System.out.println(" " + obj instanceof Object);
}
}
Я получаю это в командной строке:
C:\Users\xxxxxx\Desktop>java Testing
returned false
true
Должен ли "null instanceof someType" всегда возвращать false?
Это:
" " + obj instanceof Object
оценивается как:
(" " + obj ) instanceof Object
и " " + obj
- это действительно непустая строка, которая является экземпляром Object
.
В последнем System.out.println
сначала оценивается " " + obj
, а результат, который является String
, проверяется для instanceof Object
, и результат печатается.
In ("" + obj) - это часть, которая сначала оценивается так, чтобы после скобки не было больше нуля. Таким образом, это экземпляр объекта Object.
Также ссылайтесь на приведенную ниже ссылку, чтобы ваша концепция была понятной.
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html