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
}
}
谢谢
# 1 楼答案
不能(除了by using reflection),因为泛型类型参数在编译期间会被删除
我建议你重新考虑你的设计,而不是试图用泛型来解决它。从长远来看,将任意类型的集合传递到同一个方法会导致问题
# 2 楼答案
你不能。Java有基于擦除的泛型,这意味着类型参数在运行时不可用
如果你的集合不是空的,你当然可以对第一个元素做
instanceof
之类的操作