初学者的基本 IndexOutOfBoundsException

Basic IndexOutOfBoundsException for beginners

我有一个工程师 class。我正在创建一个工程师类型的空数组列表。

我正在创建一种方法来检查 arraylist,如果 arraylist 不为空,它必须给我索引 0。但是如果 arraylist 为空。我的方法必须创建一个新的 Engineer 对象并添加到空数组列表中。添加之后,我期望我的方法给我索引 0。但它会抛出 IndexOutOfBoundsException。我知道我错过了一些简单的事情,但我不知道如何解决。

ArrayList<Engineer>  newEmptyEngineerList = new ArrayList<>();
findLastEngineer(newEmptyEngineerList);

public static void findLastEngineer(ArrayList aa){

    if (aa.get(0)!=null){
        System.out.println(aa.get(0));
    }
    else {
        Engineer eng = new Engineer();           
        aa.add(0,eng);
        System.out.println(aa.get(0));
    }

}

在调用 get(0) 之前,您必须确保列表不为空。
还应避免使用原始数组列表,并在用作函数参数或 return 类型时更喜欢接口 List 而非其实现。

public static void findLastEngineer(List<Engineer> aa) {
    if (aa.isEmpty()){
        aa.add(new Engineer());
    }
    // get and print last element
    System.out.println(aa.get(aa.size() - 1));
}