我已经尝试过使用Java泛型的一些东西,但这个问题似乎无法解决!
由于抽象超类,我必须实现一个方法,如果它们是Integer,则添加两个Type T值,并返回类型为T的结果。
public T evaluate(T left, T right) {
if(left instanceof Integer && right instanceof Integer){
return (((Integer)left) + ((Integer)right));
}else{
return null;
}
}
这就是我到目前为止所做的一切,因为Eclipse总是告诉我,Java无法从Integer转换为T.
如何强制Java转换为T? 或者有可能写两种方法吗?一个用于T扩展整数而一个用于不用?
答案 0 :(得分:1)
在这种情况下似乎不需要泛型,因为方法evaluate()
仅处理一种特定类型(Integer
)并返回该特定类型(同样,Integer
)
答案 1 :(得分:0)
您的方法返回T
,因此您需要将结果转换为T
。例如:
public T evaluate(T left, T right) {
if (left instanceof Integer && right instanceof Integer) {
Integer result = ((Integer) left) + ((Integer) right);
return (T) result;
} else {
return null;
}
}