Ваша реализация ArrayList верна.
ArrayList <BankAccount> accountList = new ArrayList<BankAccount>();
Здесь вы заявляете, что ваш accountList будет содержать объекты типа Bank Account.
accountList.add(new BankAccount("Peter",100.00));
accountList.add(new BankAccount("Jan",1500.00));
Здесь код выполняет 2 вещи: создает объект типа BankAccount с помощью предоставленного вами конструктора и добавляет эти вновь созданные объекты в accountList.
Кажется, в вашем коде проблема с компиляцией в следующих 2 строках: -
BankAccount.setName("Phil");
System.out.println(accountList.get(1).getName());
В первой строке вы пытаетесь вызвать метод setName () для класса (как если бы это был статический метод), а в классе BankAccount он указан как метод экземпляра. (без статического ключевого слова)
Во второй строке вы получаете объект класса BookAccount с помощью accountList.get(1)
, а затем вызываете для него метод getName (). Однако getName () отсутствует в вашем классе BookAccount.
Исходя из кода, который я вижу, ваше понимание ArrayList выглядит хорошо.