gpt4 book ai didi

java - 我可以对 float[] 和 int[] 使用泛型吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:25:50 25 4
gpt4 key购买 nike

我们有两个几乎相同的进程类,除了一个用于处理 float[] 数据,另一个用于处理 int[] 数据。

我想把它们合二为一。我最初的想法是对 float[] 和 int[] 使用泛型。

Java 泛型对我来说是新的。所以我编写了以下测试方法来查看泛型如何工作,但我无法让它为我工作。

public <T> T caculate(T[] values)
{
T result;
for(int i = 0; i < values.length; i++)
{
result = result + values[i];
}

result = result/(values.length);
return result;
}

有人可以帮我修改上面的方法吗? float 和 int 是 Java 中的原始类型。可能上面的方法不对。

最佳答案

We have two process classes which are almost identical except One is used to process a float[] data and another is for a int[] data.

不幸的是,您不能使用泛型来做到这一点。您最好的选择是咬紧牙关,分别对这两个类进行编码;即没有泛型。

理论上,您可以尝试将数组更改为 Integer[]Float[]和改变<T><T extends Number> .然而:

  • 这可能涉及更改代码的其他部分。

  • 它可能会使您的处理代码变慢。

  • 使用 T extends Number 可能很难以通用方式表达您的处理算法.首先,Number接口(interface)不支持算术。


我想也可以通过将原始数组包装在某个类中使它们看起来像(比方说)整数数组来解决这个问题。但这可能会给您带来截断、精度等方面的问题……具体取决于您正在实现的算法。所以这只会在有限的情况下起作用。

关于java - 我可以对 float[] 和 int[] 使用泛型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6012974/

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