我如何使这种事情起作用?我可以检查(obj instanceof List<?>),但不能检查(obj instanceof List<MyType>)。有办法可以做到吗?

最佳答案

这是不可能的,因为在泛型编译时会擦除数据类型。做到这一点的唯一可能方法是编写某种包装,该包装保存列表包含的类型:

public class GenericList <T> extends ArrayList<T>
{
     private Class<T> genericType;

     public GenericList(Class<T> c)
     {
          this.genericType = c;
     }

     public Class<T> getGenericType()
     {
          return genericType;
     }
}

10-05 18:55