Nope, don't have Java on this box. But your test is flawed regardless. You are still calling upon two objects .. the interface, and the object. "object" in my previous reply not being the programmatic definition of instantiated object, but "thing". Even on the vtable this makes a difference. When it references the interface on the object, verifying the interface is satisfied.
Your test is flawed, regardless. Compile two applications, one with List, one with ArrayList. Then compare. Not one with both.
and irrespective of this digression, why use "List" and not "ArrayList" when you are expecting an ArrayList, not a polymorphic "List," object?
WHa happens in future when you want switch out implementations of a List, having a handle to a list means you can use constructs like linked lists.
And whats wrong with using typesafety? we know the solutions needs a collection of Integers? so we should let the compiler enforce this no?