Markus Möller: Templates wie in C++

Hallo zusammen!

Ich habe sehr viele Klassen, die alle nach dem selben Muster aufgebaut sind. Ein Beispiel:

----
public class Autoverwaltung extends Verwaltung{
  private Auto data;

public Auto getData() {
    return data;
  }
}
---

public class Personenverwaltung extends Verwaltung {
  private Mensch data;

public Mensch getData() {
    return data;
  }
}

----

Alle haben eine private Variabel namens "data" und alle eine Methode "getData". Nun gibt es wie gesagt sehr viele solcher Dateien, in allen ist aber data eine Instanz verschiedener Klassen (Auto, Mensch,...). Ich würde gerne in der Oberklasse "Verwaltung" eine Methode getData() implementieren, so dass sie in den Unterklassen nicht jedesmal neu hinzugefügt werden muss. In C++ gibt es ja Templates. Kann man soetwas mit Java überhaupt realisieren ohne die Klasse "Object" mit anschliessenden Casting zu verwenden?

  1. Hallo Markus

    Jein. Es ist noch nicht Teil der Javaspezifikation aber es gibt einen Kompiler, der das unterstützt.
    http://www.research.avayalabs.com/user/wadler//pizza/gj/
    So weit ich weiß, ist vorgesehen, generische Klassen in Java 1.5 aufzunehmen.

    Grüße

    Daniel

  2. hi!

    Alle haben eine private Variabel namens "data" und alle eine
    Methode "getData". Nun gibt es wie gesagt sehr viele solcher
    Dateien, in allen ist aber data eine Instanz verschiedener Klassen
    (Auto, Mensch,...). Ich würde gerne in der Oberklasse
    "Verwaltung" eine Methode getData() implementieren, so dass sie in
    den Unterklassen nicht jedesmal neu hinzugefügt werden muss. In
    C++ gibt es ja Templates. Kann man soetwas mit Java überhaupt
    realisieren ohne die Klasse "Object" mit anschliessenden Casting
    zu verwenden?

    Nein, wo denkst du hin. Weißt du nicht, dass Java eigentlich eine
    grausam umständliche Sprache ohne geeignete Anwendungsbereiche ist?
    :)

    Zur Lektüre:
      http://www.math.fu-berlin.de/~leitner/java/suck.html

    bye, Frank!

    ps: Dass Java irgendwann Templates und andere nützliche Dinge unter-
    stützen wird, glaube ich erst, wenn ich's sehe... ;)