public static String method(List<?> arg){ // Do something based on type of the list } //I call the method as below List<ClassA> listA = new ArrayList<ClassA>(); List<ClassB> listB = new ArrayList<ClassB>(); method(listA); method(listB);
在方法中,我如何知道arg是ClassA的List还是ClassB的List?@H_502_5@
此外,我相信,如果你使用问号,编译器不会捕获类型不匹配,直到运行时(已实现;有效Java的第119页),绕过擦除,并有效地消除了使用泛型类型带来的好处???@H_502_5@
回答提问者的问题:如果你使用List<对象>然后尝试将它转换为A或B,可能使用instanceOf,这可能是一种告诉它是什么的方法.我敢打赌,有一个更好的方法来做到这一点.@H_502_5@