我有一种在 a 上运行的方法List
,删除某些重复项。该算法仅对实现RandomAccess的列表有效。为了防止滥用和令人失望的表现,我想知道如何执行RandomAccess
限制。不幸的是,RandomAccess
接口没有扩展List
,所以我有点需要同时使变量成为两种类型。
我可以将方法声明为 acceptArrayList
而不是List
,但其他列表类型也可以实现RandomAccess
(例如,Collections.synchronizedList
and返回的列表Collections.checkedList
),我不想阻止这些。
我尝试了泛型,但无法构建有效的语法:
public <T> void process(<List<T> extends RandomAccess> list) {
...
}
我可以:
if (!(list instanceof RandomAccess))
throw new UnsupportedOperationException("RandomAccess list required");
但随后该限制仅在运行时强制执行,这不太健壮。
帮助?