Die Frage ist, wieso kommt bei der Varags-Methode
...
"List<Integer> numbersList = Arrays.asList();"
...
eine java.lang.UnsupportedOperationException ?
Wenn man das Gleiche aber in Main mit fixen Integer-Werten macht, dann kommt keine java.lang.UnsupportedOperationException ?
Hier geht
"List<Integer> numbersList = Arrays.asList(60, 20, 120);"
Bei der Methode muss man
"List<Integer> numbersList = new ArrayList<>();"
schreiben, sodass es funktioniert !
...
"List<Integer> numbersList = Arrays.asList();"
...
eine java.lang.UnsupportedOperationException ?
Wenn man das Gleiche aber in Main mit fixen Integer-Werten macht, dann kommt keine java.lang.UnsupportedOperationException ?
Hier geht
"List<Integer> numbersList = Arrays.asList(60, 20, 120);"
Bei der Methode muss man
"List<Integer> numbersList = new ArrayList<>();"
schreiben, sodass es funktioniert !
Java:
public class GenericsDemo
{
// Main
public static void main(String... args)
{
// Varargs ohne Generics:
sumA(1,2,3,4,5,6,7,8,9,0);
// Args mit Generics:
int result = 0;
List<Integer> numbersList = Arrays.asList(60, 20, 120); // Addition korrekt
for(var nL : numbersList) // oder int
result += nL;
System.out.println(result);
// Varargs mit Generics (Addition):
sumB(60, 20, 120);
}
// Varargs ohne Generics (Addition):
static void sumA(int... numbers)
{
int result = 0;
for(int i : numbers)
{ result += i; }
System.out.println(result);
}
// Varargs mit Generics (Addition):
static void sumB(int... numbersX)
{
int result = 0;
// List<Integer> numbersList = Arrays.asList(); // java.lang.UnsupportedOperationException
List<Integer> numbersList = new ArrayList<>(); // .add korrekt
for(var i : numbersX) // oder int
{ numbersList.add(i); }
for(var nL : numbersList) // oder int
{ result += nL; }
System.out.println(result);
}
}
Zuletzt bearbeitet: