Если в API ArrayList поддерживает сериализацию, нужно в самом классе ставить implements Serializable?

Да, если вы хотите сериализовать объекты типа ArrayList и использовать их внутри вашей программы, вы должны реализовать интерфейс Serializable в самом классе, который содержит экземпляр ArrayList.

Интерфейс Serializable используется в Java для обозначения классов, которые могут быть преобразованы в последовательность байтов и сохранены во внешнем хранилище (например, файле) или переданы по сети. Объекты, реализующие Serializable, могут быть десериализованы обратно в свою исходную форму.

ArrayList в Java имеет реализацию, которая поддерживает сериализацию. Это означает, что вы можете сохранить свой объект ArrayList в файл или передать его по сети, а затем восстановить его обратно в исходное состояние. Однако, чтобы использовать эту функциональность, класс, содержащий ArrayList, должен реализовывать интерфейс Serializable.

Для реализации Serializable в классе вы должны добавить ключевое слово implements Serializable в объявление класса и убедиться, что все его поля также являются сериализуемыми. Это достигается посредством реализации Serializable интерфейса или пометки соответствующих полей ключевым словом transient, если эти поля не должны быть сериализованы.

Следует отметить, что если класс содержит ссылки на другие объекты, такие как пользовательские классы или объекты других библиотек, они также должны быть сериализуемыми или отмечены как transient, иначе возникнет исключение NotSerializableException.

Вот пример класса, который содержит экземпляр ArrayList и реализует Serializable:

import java.io.Serializable;
import java.util.ArrayList;

public class MyClass implements Serializable {
    private ArrayList<String> myList;

    public MyClass() {
        myList = new ArrayList<>();
    }

    public void addToList(String item) {
        myList.add(item);
    }

    public ArrayList<String> getList() {
        return myList;
    }
}

В данном примере MyClass реализует Serializable и содержит экземпляр ArrayList<String> myList, который будет сериализован вместе с объектом MyClass при сохранении или передаче по сети.

Обратите внимание, что при сериализации и десериализации объекта ArrayList, его содержимое также будет сохранено и восстановлено.