Java泛型类型参数

发布于 2021-01-29 20:41:06

我有一个方法以a List<?>作为参数。

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);

在中method,我如何知道arga ListClassA还是a ListClassB

关注者
0
被浏览
67
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    根据用户omain的回答“如果使用<?>,则意味着您将不会在任何地方使用参数化类型。要么转到特定类型(在您的情况下,似乎是List <String>),要么转到非常通用的List<Object>

    另外,我相信如果您使用问号,编译器将在运行时(类型;有效Java的第119页)消除类型不匹配的情况,绕过擦除,并有效地消除了使用泛型类型所带来的好处?

    要回答发问者的问题:如果使用List<Object>,然后尝试将其强制转换为A或B,则可能使用instanceOf,这可能是一种说明其含义的方法。我敢打赌,有比这更好的方法了。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看