4.1.7 Untersuchen Sie das folgende Programm ArrayGetLongApp. Ist es syntaktisch korrekt ? Wenn ja, welche Ausgabe erzeugt es? Korrigieren Sie gegebenenfalls.

import java.lang.reflect.Array;

public class ArrayGetLongApp
{
   public static void main(String[] args)
   {
      long[] einArray={42,21,7,7};
      long long1 = einArray[1];
      long long2 = Array.getByte(einArray,1); // Diese Zeile bewirkt -->
      // Exception in thread "main" java.lang.IllegalArgumentException:
      // argument type mismatch
      // at java.lang.reflect.Array.getByte(Native Method)
      // at ArrayGetLongApp.main(ArrayGetLongApp.java:10)

      // long long2 = Array.getLong(einArray,1); // richtige Lösung
      System.out.println("long1: " + long1);
      System.out.println("long2: " + long2);
   }
}

Das Programm ist syntaktisch korrekt und lässt sich kompilieren. Bei der Ausführung wird allerdings eine IllegalArgumentException geworfen. Grund dafür ist, dass der getByte( )-Methode ein long-Array übergeben wird. Das ist nicht zulässig. Stattdessen muss die getLong( )-Methode verwendet werden:

long long2 = Array.getLong(einArray, 1);