Odnośnie List<Integer> i liczb ujemnych - mam metodę getElementsTextByIndexes() i parametr List<Integer> indexes - sugeruje to raczej, jakie powinno być użycie tej metody i jakie parametry powinniśmy tam wprowadzić - możemy zastosować dokładnie tę samą metodę, o której mówiłeś w przypadku nulli - Gdyby znalazła się tam liczba ujemna, to szukałbym problemu gdzie indziej.
Jasne, najbezpieczniej byłoby dostarczyć API niepozwalające na podanie nieprawidłowych parametrów, tylko nasza rozmowa przestaje mieć jakikolwiek związek z przedstawionym problemem. Jakaś implementacja UnsignedInt, jakiś builder dla listy indexes, który nie pozwoliłby na np. dodanie indeksu spoza indeksów listy elements itd. Dla mnie, zarówno podanie null, jak i podanie -1, jest nieprawidłowym użyciem API i w obydwu przypadkach skończy się wyjątkiem.
@catom: Nie chcę filozofować, ale moim zdaniem -1
to taki sam int jak 1
, natomiast null
to coś zupełnie innego. Jest ogromna masa operacji liczbowych które mają sens i dla dodatnich i dla ujemnych liczb (np. max
,min
,intersect
,sum
, etc. ). To że akurat operacja o której mówimy List.get(index)
takiej nie obsługuje, to trudno, trzeba się przed tym zabezpieczyć - dlatego o tym mówię w punkcie 2. mojej odpowiedzi. Z null
em jest trochę inaczej, bo żadna operacja liczbowa dla niego nie przejdzie (chyba że jest napisania dookoła API z null
ami jak 20 lat temu i sobie zmienić tego nulla
na jakiegoś defaulta). Więc ten argument z szukaniem problemu gdzie indziej, moim zdaniem, ma sens tylko dla null
i - bo jak mówiłem -1
to taki sam int jak 1
i ogrom operacji na intach ma sens również dla ujemnych.