Java-null instanceof объект оценивает как 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?

3   51   2012-09-06 13:03:34

3 ответа:

это:

" " + obj instanceof Object

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

(" " + obj ) instanceof Object

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

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

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

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

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