有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何找到集合类型?

我有两个变量

Collection<Service> services = new ArrayList<Service>();
Collection<Subscription> subscriptions = new ArrayList<Subscription>();

我有下面的方法,我想知道怎样才能找到“?”的值在这个方法中,或者我如何才能找到是传递了服务还是传递了订阅

myMethod(Collection<?> myCollection) {

   if (myCollection is of type Service) {
      // process service
   }
   else if (myCollection is of type Subscription) {
      // process subscription
   }
}

谢谢


共 (2) 个答案

  1. # 1 楼答案

    不能(除了by using reflection),因为泛型类型参数在编译期间会被删除

    我建议你重新考虑你的设计,而不是试图用泛型来解决它。从长远来看,将任意类型的集合传递到同一个方法会导致问题

  2. # 2 楼答案

    你不能。Java有基于擦除的泛型,这意味着类型参数在运行时不可用

    如果你的集合不是空的,你当然可以对第一个元素做instanceof之类的操作