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 nullem jest trochę inaczej, bo żadna operacja liczbowa dla niego nie przejdzie (chyba że jest napisania dookoła API z nullami 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 nulli - bo jak mówiłem -1 to taki sam int jak 1 i ogrom operacji na intach ma sens również dla ujemnych.