gpt4 book ai didi

Java 泛型 : The wildcard(? ) 作为参数和返回类型

转载 作者:行者123 更新时间:2023-12-04 21:28:46 28 4
gpt4 key购买 nike

我有以下代码段:

public void reorder(int fromIndex, int toIndex) {
getElements().add(toIndex, getElements().remove(fromIndex));
}

在这里,方法getElements返回类型为 List<?> . remove方法的返回类型为 ? , 和 add方法将其参数显示为 int index, ? element .所以我的假设是,因为 remove 的返回类型add 的方法和第二个参数方法相同 - ? - 方法调用必须成功。但是,我错了,上面的代码段导致错误:

The method add(int, capture#17-of ?) 
in the type List<capture#17-of ?>
is not applicable for the arguments (int, capture#18-of ?)

在这里,我没有任何直接访问列表的权限,我不知道它是 getElements 返回的原始类型方法。我在这里只想删除 fromIndex 处的项目并把它放在 toIndex .那么,我该如何实现呢?还有我对泛型的理解有什么问题吗?

最佳答案

不不不!使用捕获:

public void reorder(int fromIndex, int toIndex) {
reorderWithCapture(getElements());
}

private <E> void reorderWithCapture(List<E> elements) {
elements.add(toIndex, elements.remove(fromIndex));
}

关于Java 泛型 : The wildcard(? ) 作为参数和返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10548399/

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