Wyobraźmy sobie, że znajdujemy w projekcie taki kod w Javie (lub prawie identyczny — w Kotlinie):
public void assertNoViolations(Collection<ConstraintViolation> violations) { if (!isEmpty(violations)) { throw new IllegalStateException("violates constraints: " + violations); } }
Na oko — kod jak kod, robi co trzeba, nuda. Co może pójść nie tak?
Metoda zgodnie z oczekiwaniami bezproblemowo akceptuje nulla. Rzuca wyjątkiem, gdy przekażemy jej listę zawierającą contraint violations. Jest jeden szkopuł:
assertNoViolations(emptyList());
java.lang.IllegalStateException: violates constraints: []
Jak to jest możliwe?
Czytaj dalej „Niebezpieczny isEmpty() z utili Springa”