先看2段代码
protected <T> List<T> po2vo(Iterator<T> t_it) { List list = null; if(t_it!=null){ list = new ArrayList(); while(t_it.hasNext()){ Operator pOperator = (Operator)t_it.next(); Operator vOperator = OperatorPo2Vo.operatorPo2Vo (pOperator); list.add(vOperator); } } return list; }
protected <Operator> List<Operator> po2vo(Iterator<Operator> t_it) { List list = null;if(t_it!=null){ list = new ArrayList(); while(t_it.hasNext()){ Operator pOperator = (Operator)t_it.next(); Operator vOperator = OperatorPo2Vo.operatorPo2Vo(pOperator); list.add(vOperator); } } return list; }
第一段代码没报错,但有警告,第2段代码Myeclipse提示下面的错误
The method operatorPo2Vo(Operator) in the type OperatorPo2Vo is not applicable for the arguments (Operator)
意思很简单,OperatorPo2Vo类中参数为Operator的operatorPo2Vo方法对参数Operator不可用,我知道是由于泛型引起的,但不知道具体的原理,请教高手解释一下