in Java müssen alle Variablen, explizit deklariert werden.
Die Variablen innerhalb einer Methode kann man meines Wissens nach auch nicht inspizieren. Um die Flder einer Klasse auszulesen, kann man das Reflection-API verwenden.
/Dirk
Hallo,
zunächst mal nein - im Sinne keine direkte Sprachunterstützung. Reflection hat Dirk ja bereits erwähnt, damit lassen sich solche Spielchen nachbauen. Direkt für Dein Bsp. würde es auch mit Maps gehen, wobei Fälle wie
$a = „ai“
$b = „n“
m${a}${b} = „hallo“
noch händisch evtl. mit Hilfe von MessageFormat abgebildet werden müßten.
Erzähl einfach mal, wozu du das brauchst, dann können wir die vielleicht gezielter weiterhelfen.
Mit dem Reflection-API kannst du zur Laufzeit einzelne Klassen unteruchen. Das heisst, z.B. Konstruktoren, Methoden und Felder ermitteln und auch aufrufen.
Wird im allgemeinen von IDE eingesetzt. Man kann es aber auch einsetzen um einzelne Code-teile dynamisch nachzuladen und auszuführen.
/Dirk
P.S.:
Perl ist die einzige Programmiersprache die vor und nach RSA-Encryption gleich aussieht!
ich wollte eine Variable erst zur Laufzeit erschaffen, samt Namen.
Sollte halt von den übergebenen Variablen in einer JSP abhängen.
Eben diese sollten ohne explizite Deklaration entstehen. bzw. ich wollte eine Routiene schreiben, welche die Variablen selbsttändig deklariert, die grad übergeben werden.
Mit so ner Art assoziatives Array würde ich es jetzt probieren.
Kennst du sowas in Java.
Den Vector hab ich schon gefunden, nur gibts vieleicht was eleganteres?
Erst mal: Java ist halt eine ganz andere Sprache als PHP. Java wird compiliert, PHP wird interpretiert. In Java muss also alles schon feststehen, wenn eine Klasse fertig geschrieben ist, in PHP ist man da viel freier. Java ist für größere Projekte besser geeignet als PHP, weil die größere „Strenge“ von Java dem Programmierer hilft, nicht den Überblick zu verlieren und Fehler im Programm leichter zu finden. Für die meisten Web-Projekte halte ich aber PHP für geeigneter, gerade weil die „Strenge“ von Java nicht zu der eher lockeren Bindung zwischen Server und Browser passt.
Das ist wohl der Hintergrund Deines „Problems“. Die Lösung ist java.util.Map (Interface), meistens ist java.util.HashMap (Klasse) am performantesten. Zum Beispiel:
Map vars = new HashMap();
String a = "main"; // PHP: $a = "main";
vars.put( a, "bla" ); // PHP: ${a} = "hallo!";
System.out.println( vars.get( a ) ); // PHP: echo ${a};
(Intern speichert PHP übrigens seine Variablen auch in einer Hashmap - man sieht es nur normalerweise nicht.)
Langfristig wirst Du Dich wahrscheinlich leichter tun, wenn Du davon ausgehst, dass in Java alles anders ist als in PHP. In PHP klappt auch „learning by doing“ ganz gut, in Java eher nicht. Also: hinsetzen und lernen, zum Beispiel aus den „Java Tutorials“ von Sun.
Von JSPs halte ich übrigens nicht viel… wenn schon Web-Programmierung in Java, dann lieber mit Servlets. Eine Site mit, sagen wir, 30 oder 40 dynamischen Seiten ist in PHP noch zu überblicken, in JSPs schon eher eklig. (IMHO.)