Since some sub-class of AbstractMap might implement the Collection interface, the compiler has to allow you to
test whether a is an instanceof Collection. Unless the type of a reference is a final class, the compiler cannot be sure at compile time that the reference is not an instanceof any interface.
// System.out.print((a instanceof AbstractCollection)+","); // compile error
System.out.print((a instanceof Runnable)+","); // compiles OK, prints false
[ February 03, 2003: Message edited by: John Paverd ]