Following code gives compilation error with error "Duplicate Method"
static int test(int i){
return 1;
}
static String test(int i){
return "abc";
}
This is expected as both the overloaded method have same signature and differ only in return type.
But the following code compiles fine with a warning:
static int test1(List<Integer> l){
return 1;
}
static String test1(List<String> l){
return "abc";
}
As, we know the Java Generics works on Erasure, which mean in byte-code, both these method have exactly the same signature and differs with return type.
Furthur, to my surprise the following code again gives compilation error:
static int test1(List<Integer> l){
return 1;
}
static String test1(List l){
return "abc";
}
How is the second code working fine without giving any compilation error, though there is duplicate method?