由Spring引出的关于java泛型的疑问(超难)
有如下类:
package com.sily;
import java.util.ArrayList;
import java.util.List;
public class GenericSily {
public List<?> l(int i) {
switch (i) {
case 1:
return new ArrayList<Double>();
default:
return new ArrayList<String>();
}
}
public List<Double> getDoubleList() {
return (List<Double>)l(1);//此处会有警告
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
以上类很简单,方法public List<?> l(int i)是一个根据参数返回不同类型的List,而方法public List<Double> getDoubleList() 是返回Double类型的List,但在此方法中如果按如上的代码所示就会警告,请问该如何处理这个方法?
实际上我这个例子来源于spring的hibernate的一个模型.
在上例中,方法public List<?> l(int i) 就相当于spring中HibernateTemplate类的public List find(String queryString)方法,此方法的作用就是根据不同的参数返回不同类型的List对象
而我们的DAO中如UnitDAO中,应该会有这样的方法public List findUnitDTO(String queryString)来封装HibernateTemplate的public List find(String queryString)方法,这就类似于上例中的 public List<Double> getDoubleList() 方法,作用就是返回特写类型的List
我不知道sping如果有jdk1.5的代码将会写成什么样,所以给出了上面的例子,这便是我上面那个例子的原始目的.但发现编译有问题...