如题,晕了@
一,多态与重载
classTest{
public static void main(String[] args){
List<String> l1= new ArrayList<String>();
ArrayList<String> l3 = new ArrayList<String>();
method(new ArrayList<String>()); //输出第一个
method(l1); //调用第二个 ,为什么和上一句不一样呢???
method(l3); //输出第一个
}
public static void method (ArrayList<String> cl){}
public static void method (List<String> cl){}
}
二,泛型与重载,如果这么写
public static void method (List<Integer> cl){}
public static void method (List<String> cl){}
上面两个方法会报错,应该不算重载,是不是说明编译时忽略了泛型参数
但是如果是下面的写法,是不是说明编译时检查了泛型参数,这不是很矛盾吗???
public class Test {
public static void main(String[] args){
ArrayList<String> l2 = new ArrayList<String>();
ArrayList<Integer> l3 = new ArrayList<Integer>();
method(l2); //调用了第二个
method(l3); //调用了第一个
}
public static void method (ArrayList<Integer> cl)
{
System.out.println("AS");
}
public static void method (List<String> cl)
{
System.out.println("LS");
}
} |