泛型不会投射和加在一起

时间:2017-10-18 14:32:49

标签: java generics casting

我想检查一下,如果我的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);
            }
        }

3 个答案:

答案 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)

您应该能够直接将其转换为双倍

,而不是乘以1
double valueCast1= (double)value1;
double valueCast2 = (double)value2;