【问题标题】:Generics don´t cast and add together泛型不会投射和相加
【发布时间】:2017-10-18 14:32:48
【问题描述】:

我想检查一下我的泛型是否属于整数类型。如果是,则应将它们转换为双精度,然后将它们加在一起。我收到错误“操作符 * 未定义参数类型 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);
            }
        }

【问题讨论】:

  • 你为什么要写这样的代码?
  • 我想 Kayaman 可能要问的是,你为什么要乘以 1。
  • Java 和 JavaScript 是两种不同的语言... *1.0 适用于 javascript...
  • 当然,身体本身就是无稽之谈。该代码也绝不是通用的。当然,有泛型类型E,但它也可能只是Object
  • 主要问题是为什么你要为一个方法使用两个通用参数,该方法只有在你提供两个整数然后尝试(错误地)转换为双精度并打印它们的总和时才起作用。

标签: java generics casting


【解决方案1】:

您必须为您的整数值添加强制转换。您之前检查过它们是否为整数,但在句子中

double valueCast1 = value1 * 1.0; 
double valueCast2 = value2 * 1.0;

它们仍然只是通用的 E 类。您必须指定它们应该被视为整数,所以

double valueCast1 = (Integer)value1 * 1.0; 
double valueCast2 = (Integer)value2 * 1.0;

就是这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多