Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


6.2

Verwendung von Zusicherungen


Damit in einem Programm Zusicherungen geprüft werden, sind drei Schritte erforderlich: Die zusätzlich erforderliche Aktivierung von Zusicherungsprüfungen zur Laufzeit hat den Vorteil, dass sie ohne Neuübersetzung zentral ein- und ausgeschaltet werden können. So können Zusicherungen auch zur Ad-hoc-Fehlersuche schnell wieder eingeschaltet werden.

Wenn Klassen mit Unterstützung für Zusicherungen übersetzt wurden, enthält der Bytecode zwar die Instruktionen für die Zusicherungen, ausgeführt werden diese aber nur nach der Aktivierung. Auf diese Weise entsteht kein Performance-Verlust, wenn die Zusicherungen im Laufe des Entwicklungsprozesses nicht mehr benötigt werden.

In Fällen, in denen auch der Bytecode aus der Klasse entfernt werden soll, kann man sich folgender Technik bedienen, die gewissermaßen eine bedingte Kompilierung in Java realisiert:
  final static boolean DEBUG = true;

  public static char[] subArray(char[] array, int start, int end) {
    if (array ==  null)
      throw new IllegalArgumentException();
    if (start < 0)
      throw new IllegalArgumentException();
    if (end > array.length)
      throw new IllegalArgumentException();
    if (start > end)
      throw new IllegalArgumentException();

    char[] result = new char[end-start];
    for(int i = start; i < 10; i++) {
      if (DEBUG)
        assert (i >= 0) && (i < result.length)
          : "i out of bounds: "+i;
      result[i] = array[i];
    }
    if (DEBUG) {
      assert (result != null);
      assert (result.length == (end-start));
    }
    return result;
  }

Ein guter Compiler erkennt, dass die assert-Anweisung nie erreicht wird, wenn die Konstante DEBUG auf false gesetzt ist, und entfernt die entsprechende if-Anweisung komplett aus dem Bytecode.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.