Создание метода размера для реализации списка - PullRequest
0 голосов
/ 29 февраля 2020

Мне нужно реализовать свой собственный метод List.size (). Я создаю такой метод:

    public  class MyArrayList<Long> implements List<Long> {

 List<Long> list;

    @Override
    public int size() {
        if(list == null) {
            throw new NullPointerException("List is null");
        }
        int size = 0;
        for(Long element : list) {
            size++;
        }
        return size;

} Я пишу абстрактный тестовый класс, чтобы выполнить тест для существующего метода размера и моего.

public abstract class AbstractArrayListTest {
    protected abstract List<Long> getEmptyList();
    protected abstract List<Long> getSizeOfTheList();

    @Test
    public void shouldReturnFalseIfListContainElement() {
        assertTrue(getEmptyList().isEmpty());
    }
    @Test
    public void shouldReturnSizeOfList() {
        int size = getSizeOfTheList().size();
        assertEquals(size, getEmptyList().size());
    }
}

Каждый раз, когда я пытаюсь проверить это, получаю null E. Есть мысли, как я могу это написать? Стоит отметить, что оригинальная реализация List проходит этот тест.

1 Ответ

2 голосов
/ 29 февраля 2020

Вы не инициализируете список, над которым завершаете работу. Когда вы пытаетесь перебрать его, вы получаете NPE. Пожалуйста, попробуйте следующее определение класса:

public  class MyArrayList<Long> implements List<Long> {

    List<Long> list = new ArrayList<>();

    // rest of the code

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...