Gibt es in Java sowas wie Templatemetaprogramming wie in C++?
-
Ich habe da einen C++Quelltext der essentiell auf Templatemetaprogramming basiert und will den in Java übersetzen, wegen Plattformunabhängigkeit und so. Geht das?
-
Hi
in java 1.5 ist sowas wie tamplates vorhanden
Ja. wenn auch nicht direckt 1 zu eins. man kann immer portieren.
in java braucht man eigentlich keine tamplates. da alles von Object abgeleitet ist ( bis auf eine handvoll ausnahmen wie int, boolean, float, double, character,...)
Die vorhandenen elemente wie listen, hashtabels, .. verwalten objekte und somit ist eigentlich eine tamplate so wie es c++ kennt nicht notwendig. nur die notwendige rückkasterei von object ist etwas nervend. java prüft die typsicherheit erst zur laufzeit (was natürlich auch seine vorteile haben kann. wenn man alles in eine liste reinstopfen kann was ein object ist) In java 1.5 eine änderung eingeführt um z.B. eine List of Address zu implementieren ohne voher jeden eintrag zu kontrollieren ob er vom Typ address ist hinterher jeden eintrag wieder auf Address zu kasten (ich glaub das dabei auch eine typprüfung zur compilzeit statfindet. auch der zugriff auf die elemente in einer liste wurde vereinfacht es gibt jetzt so ein art for each element of)im prinzip kannst du java als ein template vom type (void*) interpretieren. nur das java dir möglichkeiten bereitstellt um herauszukriegen um was für ein objekt es sich handelt. bzw es zur laufzeit prüft und dann entsprechend mekert.
gruss termite
-
warum wurde meine beitrag gelöscht? sowas wie template metaprogrammierung geht in java nicht.
-
Genau!
Java hat keine Templates, sondern Generics. Generics != Templates.
Mit Java kann man keine Template Metaprogrammierung machen -zu mindestens nicht so, wie du es aus C++ kennst-. Templates erlauben nicht nur Typen (Generics), sondern auch Konstanten, und die sind für die Metaprogrammierung wichtig.
-
der vorher geantwortet ha schrieb:
warum wurde meine beitrag gelöscht? sowas wie template metaprogrammierung geht in java nicht.
Dein Beitrag wurde gelöscht, da er in meinen Augen zu restriktiv und damit undurchschaubar war. Hättest zumindest auf die Generics kurz eingehen können. Nur ein "Nein" ist eine typische Trollantwort.