gpt4 book ai didi

java - 我在 Java 中的泛型测试不起作用!

转载 作者:行者123 更新时间:2023-12-01 02:53:11 25 4
gpt4 key购买 nike

我正在学习 Java,尤其是在泛型领域。

我相当熟悉 C# 中的泛型,但在 Java 中,情况就完全不同了。

我使用了一些非常适合测试的示例,并且我能够很好地在 Java 中复制我的大部分 C# 代码。

但是,当我尝试以下示例时,它不起作用:

private static <T> void swapKundeData(ArrayList<T> data, int index1, int index2) {

T temporary = (T) data.get(index1);

data.set(index1, data.get(index2)); //Does not compile
data.set(index2, temporary); //Does not compile

}

我收到的错误是:

类型 ArrayList 中的方法 set(int, capture#5-of ? extends ExtendTest) 不适用于参数 (int, ExtendTest)

这在 C# 中的等价物工作得很好 - 那么发生了什么事?

我听说 Java 在泛型方面受到了很多批评。这是批评的一部分吗?数据变量的 Remove 和 Add 方法工作得很好。

最佳答案

好吧,我会用

List<Kunde> 

代替

ArrayList<?>

因为无论如何你都在施法到昆德语:).

它不起作用的原因是您不知道传递的对象的类型。因此,如果您设置的 Kunde 可能是错误的类型(因为使用 ArrayList < ? >,您可以传递 ArrayList < String > 并在其上设置 Kunde,这将是错误的类型)。

另一种可能是:

private static <T> void swapData(List<T> data, int index1, int index2) {

T temporary = data.get(index1);

data.set(index1, data.get(index2)); //Does compile
data.set(index2, temporary); //Does compile

}

为了完成我的咆哮,只需使用 Collections 的 swap 方法。

http://download.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#swap(java.util.List , 整数, 整数)

关于java - 我在 Java 中的泛型测试不起作用!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4860410/

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