Может ли кто-нибудь объяснить следующее поведение в Java с помощью оператора instanceof.
Runnable r = new Thread();
даже несмотря на то, что тип переменной r является Runnable, и сравнение instanceof выполняется для классов, которые не находятся в одной и той же иерархии классов.
System.out.println(r instanceof String); // This line does not compile
System.out.println(r instanceof Vector); // This line compiles
System.out.println(r instanceof FileNotFoundException); // This line compiles