gpt4 book ai didi

java - 通用类型扩展 Number、计算

转载 作者:行者123 更新时间:2023-12-01 18:53:30 24 4
gpt4 key购买 nike

我用一种方法制作了数学运算的接口(interface),计算,采用不同数量的参数

public interface MathOperation {
public <T extends Number> T calculate(T... args);
}

这个类还有一个简单的实现,但不起作用:

private class Sum implements MathOperation {
@Override
public <T extends Number> T calculate(T... args) {
return args[0] + args[1];
}
}

问题是:

bad operand types for binary operator '+'
first type: T
second type: T
where T is a type-variable:
T extends Number declared in method <T>calculate(T...)

我想要实现的是一个简单的类,例如两个 Double 并返回 Double 。

有可能实现这一目标吗?

最佳答案

+ 不能应用于扩展 Number 的类型。 new Integer(5) + new Integer(5) 由于自动装箱而有效。您必须查看 args 的运行时类型并执行相应的操作。

大致如下:

private class Sum implements MathOperation {
@Override
public <T extends Number> T calculate(Class<T> clazz, T... args) {
if (clazz.equals(Integer.class))
{
return Integer.class.cast(args[0]) + Integer.class.cast(args[1]);
} else (....)
}
}

关于java - 通用类型扩展 Number、计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14946947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com