Java 在泛型列表中插入删除的元素

Java 在泛型列表中插入删除的元素,java,generics,collections,Java,Generics,Collections,我想从ArrayList的末尾删除元素,并将其设置在位置I。我不关心元素的顺序,但我希望这个操作是O1 我的代码: private void removeElement(int i, List<? extends MyClass> objects) { if (i >= objects.size() - 1) { objects.remove(objects.size() - 1); } else {

我想从ArrayList的末尾删除元素,并将其设置在位置I。我不关心元素的顺序,但我希望这个操作是O1

我的代码:

    private void removeElement(int i, List<? extends MyClass> objects) {
        if (i >= objects.size() - 1) {
            objects.remove(objects.size() - 1);
        } else {
            objects.set(i, objects.remove(objects.size() - 1));
        }
    }
通过这样做,我将从ArrayList中删除索引处的对象,时间复杂度为O1

我的问题是Java不允许我在i位置设置删除的元素。我得到:

错误的第二个参数类型。找到了吗?扩展MyClass',必需'?扩展MyClass’


我知道关于生产者和消费者的超级规则。我明白了?extends MyClass对象可能与exact不同?扩展MyClass列表泛型类型。但不应该允许它插入从同一列表中检索到的back元素吗

去掉通配符;我甚至不认为你需要束缚:

private void <T> removeElement(int i, List<T> objects) {

它不知道该项已从同一列表中删除。Java首先对所有参数求值,然后调用该方法。您真的需要一个上界通配符列表,还是可以去掉该列表?延伸?