小编Ash*_*lla的帖子

为什么我们需要 super 关键字来调用默认接口方法?

在下面的代码中,当我有一个类实现两个具有相同默认方法签名的接口时,它要求我重写它。但在重写方法中为什么我必须使用 super 关键字来调用默认方法。

package practice;



interface interA{

public default void AImp(){
    System.out.println("Calling Aimp from interA");
}
}


interface interB{

public default void AImp(){
    System.out.println("Calling Aimp from interB");
}
}

public class Practice implements interA,interB {

public static void main(String[] args) {


Practice inter = new Practice();

    inter.AImp();

}

@Override
public void AImp() {

    interA.super.AImp();
}
}
Run Code Online (Sandbox Code Playgroud)

我可以使用下面的代码执行相同的操作:

@Override
public void AImp() {
    interA inter = new Practice();
    inter.AImp();
}
Run Code Online (Sandbox Code Playgroud)

java oop interface super

5
推荐指数
1
解决办法
3659
查看次数

使用 remove(Object) 从 LinkedList 中删除整数

我想使用 items 值从 Integer LinkedList 中删除一个项目。但相反,我得到了 ArrayIndexOutOfBoundException。

public static void main(String[] args) {

    List<Integer> list = new LinkedList<Integer>();
    list.add(10);
    list.add(20);
    list.add(5);

    list.remove(10);
    System.out.println("Size: " + list.size());

    for (Integer integer : list) {
        System.out.println(integer);
    }
}
Run Code Online (Sandbox Code Playgroud)

我期望的输出是一个只有 20 和 5 2 个元素的列表。但我得到以下异常:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 10, Size: 3
at java.base/java.util.LinkedList.checkElementIndex(LinkedList.java:559)
at java.base/java.util.LinkedList.remove(LinkedList.java:529)
at Collections.LinkedListTest.main(LinkedListTest.java:15)
Run Code Online (Sandbox Code Playgroud)

LinkedList 将我传递的数字视为索引而不是值。那么如何在不使用其索引号的情况下将项目 10 作为值删除。

java collections linked-list doubly-linked-list

1
推荐指数
2
解决办法
604
查看次数