Przy jakich danych wystąpi błąd metody?

0

Witam serdecznie,

Mam takie zadanie do rozwiązania, głowię się nad nim i szczerze powiedziawszy nie wiem gdzie mogę znaleźć rozwiązanie, do którego zagadnienia sięgnąć, a nawet na którym rozdziale książkę otworzyć. Czy ktoś byłby w stanie mi coś podpowiedzieć? Jakoś nakierować?

//metoda:
private static String getElement(Object list, Integer number)
{
return ((List)list).get(number).toString();
}

//zadziała dla poniższych danych:

public static void main(String[] args)
{
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
System.out.print(getElement(list, 1));
}

W jakich przypadkach (dla innych danych wejściowych) metoda getElement może spowodować błąd i jak się przed tym zabezpieczyć?

4

Jeśli przekażesz coś, co nie jest listą to się wywali. Morał z tego taki, zeby deklarować typy, jakich oczekujemy i nie używać castingu bez potrzeby.

Case 2: jeśli lista będzie zawierała nulla to też może się wywalić.

3

I jeszcze gdy lista będzie krótsza niż number

3

Po kolei:

  1. Gdy list będzie null
  2. Gdy list nie będzie listą
  3. Gdy number będzie null
  4. Gdy number będzie ujemne
  5. Gdy number będzie większe niż list.size()-1
0
szatkus napisał(a):

Case 2: jeśli lista będzie zawierała nulla to też może się wywalić.

NPE w nowszych wydaniach JVM jest bardziej szczegółowo drukowany.

@VLukaszV
Zgadzam się z radą @szatkus , aby wyspecyfikować pełne typy, niech kompilator łapie maksimum sprzeczności

Pewien jesteś, ze chciałeś użyć obiektowego typu Integer, a nie zwykłego int?
Ja nie widzę w tym fragmencie kodu żadnego do tego powodu.

Powiedz szczerze, jaki problem NAPRAWDĘ tu rozwiązujemy?
Programy wywracały się, wywracają i będą wywracać, a tobie naprawdę chodzi o .... ?

2

Jako ciekawostka:
Tony Hoare - Wikipedia

Speaking at a software conference in 2009, Tony Hoare apologized for inventing the null reference:[25]

I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references in an object oriented language (ALGOL W). My goal was to ensure that all use of references should be absolutely safe, with checking performed automatically by the compiler. But I couldn't resist the temptation to put in a null reference, simply because it was so easy to implement. This has led to innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years.[26]

1 użytkowników online, w tym zalogowanych: 0, gości: 1