Я ищу способ проверить, не является ли какой-то данный список неизменяемым.
У меня есть объект с List<NoMatter>
, чтобы предлагать такие методы, как addNoMatter(NoMatter nm)
вместо того, чтобы позволить клиенту API просто делать .getNoMatters().add(nm);
. Я всегда возвращаю неизменяемую версию этого списка, поэтому клиент все еще может иметь список. Я делаю это следующим образом:
public List<NoMatter> getNoMatters() {
return Collections.unmodifiableList(this.noMatters);
}
Проблема в том, что когда я выполняю свои тесты, я просто не могу проверить, имеет ли этот объект тип UnmodifiableList. Моя первая попытка:
@Test
public void checkIfListIsImmutable(){
assertTrue("List is not immutable", this.myObj.getNoMatters() instanceof UnmodifiableList);
}
Случается, что я не могу импортировать тип UnmodifiableList
ни java.util.Collections$UnmodifiableRandomAccessList
, что я получаю, когда я пытаюсь System.out.println(myObj.getNoMatters().getClass().getName());
на консоли.
Итак, как я могу достичь этого?
PS: Я знаю, что могу пройти этот тест, выполнив:
@Test(expected = UnsupportedOperationException.class)
public void checkIfListIsImmutable(){
this.myObj.getNoMatters().add(null);
}
РЕДАКТИРОВАТЬ: Вышеупомянутый тест не дает мне понять, что список Im, который имеет дело, не является неизменным, поскольку мне нужно будет иметь тесты для каждого метода, который может изменить мой первоначальный список, включая .remove(),.clear(),.shuffle() и т.д.! вот почему я не думаю, что это хороший способ продолжить.
→ > Но я все еще верю, что это даже близко к элегантному решению! & Л; < <