51 votes

Java - null instanceof Object évalue à la fois true et false

Lorsque je compile et exécute ce code :

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'est ce que j'obtiens sur la ligne de commande :

C:\Users\xxxxxx\Desktop>java Testing
returned false
true

Le message "null instanceof someType" ne devrait-il pas toujours renvoyer false ?

102voto

MByD Points 78505

Ceci :

" " + obj instanceof Object

est évaluée comme suit :

(" " + obj ) instanceof Object

et " " + obj est en effet une chaîne de caractères non nulle qui est une instance de Object .

2voto

Dan Points 27909

Au cours de la dernière System.out.println , le " " + obj s'évalue en premier et le résultat, qui est un String est vérifié pour le instanceof Object et le résultat est imprimé.

2voto

Yogee Points 387

Dans (" " + obj), c'est la partie qui est évaluée en premier, donc il n'y a plus de nullité après la parenthèse. Il s'agit donc de l'instance d'Object.

Référez-vous également au lien ci-dessous pour que votre concept soit clair.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X