gpt4 book ai didi

java - 将方法限制为 RandomAccess 列表

转载 作者:行者123 更新时间:2023-11-30 07:14:09 25 4
gpt4 key购买 nike

我有一个对 List 进行操作的方法,可以删除某些重复项。该算法仅对实现 RandomAccess 的列表有效.为了防止误用和令人失望的性能,我想知道如何强制执行 RandomAccess 限制。不幸的是,RandomAccess 接口(interface)没有扩展 List,所以我有点需要让变量同时成为两种类型。

我可以声明接受 ArrayList 而不是 List 的方法,但是其他列表类型也可以实现 RandomAccess(例如,列表由 Collections.synchronizedListCollections.checkedList 返回),我不想阻止它们。

我尝试了泛型,但无法构建有效的语法:

public <T> void process(<List<T> extends RandomAccess> list) {
...
}

我能做到:

if (!(list instanceof RandomAccess))
throw new UnsupportedOperationException("RandomAccess list required");

但是这样限制只在运行时强制执行,这不太健壮。

帮忙吗?

最佳答案

您需要使用多个边界,由一个符号 (&) 表示:

public <T,L extends List<T> & RandomAccess> void process(L  list)

将其放入(不可编译,除非您删除第二个调用)类:

public class Main {

public static void main(String[] argv)
throws Exception
{
Main x = new Main();
x.process(new ArrayList<String>());
x.process(new LinkedList<String>());
}

public <T,L extends List<T> & RandomAccess> void process(L list) {

}
}

关于java - 将方法限制为 RandomAccess 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18616051/

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