Подтвердить что ты не робот

Java - null instanceof Object оценивает как true, так и false

Когда я компилирую и запускаю этот код:

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?

4b9b3361

Ответ 1

Это:

" " + obj instanceof Object

оценивается как:

(" " + obj ) instanceof Object

и " " + obj - это действительно непустая строка, которая является экземпляром Object.

Ответ 2

В последнем System.out.println сначала оценивается " " + obj, а результат, который является String, проверяется для instanceof Object, и результат печатается.

Ответ 3

In ("" + obj) - это часть, которая сначала оценивается так, чтобы после скобки не было больше нуля. Таким образом, это экземпляр объекта Object.

Также ссылайтесь на приведенную ниже ссылку, чтобы ваша концепция была понятной.

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html