我想检查一下,如果我的Generics是Integer类型。如果它们是,它们应该转换为double,然后应该加在一起。我得到错误“操作符*未定义参数类型E,双”。之后将两个铸造值相加在一起也存在同样的问题。
我该如何解决这个问题?
提前致谢:)
public void add(E value1, E value2) {
if(value1 instanceof Integer && value2 instanceof Integer) {
double valueCast1 = value1 * 1.0;
double valueCast2 = value2 * 1.0;
System.out.println(value1 + value2);
}
}
答案 0 :(得分:1)
您必须为整数值添加强制转换。你以前检查过它们是否是整数,但是用句子
double valueCast1 = value1 * 1.0;
double valueCast2 = value2 * 1.0;
他们仍然只是通用的E类。您必须指定它们应被视为整数,所以
double valueCast1 = (Integer)value1 * 1.0;
double valueCast2 = (Integer)value2 * 1.0;
就是这样。
答案 1 :(得分:-1)
如果我没记错的话,在确认它是一种类型后,你需要使用通用的,因为它是自我铸造的:
(int)value1
虽然它可能是一个小问题..
答案 2 :(得分:-1)
您应该能够直接将其转换为双倍
,而不是乘以1double valueCast1= (double)value1;
double valueCast2 = (double)value2;