KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Consider this example: import java.util.*; class Foo<T> { public int baz(List<String> stringlist) { return 1; } public int baz(ArrayList<Object> objectlist) { return 2; } public static void main(String[] args) { Foo<String> foo = new Foo<String>(); // (A) //Foo foo = new Foo(); // (B) System.out.println(foo.baz(new ArrayList<String>())); } } Why does it print 1 in (A) , but 2 with (B) ? I know how method resolution works, so no need to explain that to me. I want to know the deeper motivation behind this "feature". Why is there no erasure warning about it? (There is just one about Foo foo = new Foo() .) Why does method resolution use erased semantics although the generic type is given?
Tags (comma-separated)
Save Edits
Cancel