WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   [Java] variabel Klasseninstanzen erstellen (http://www.wcm.at/forum/showthread.php?t=104884)

moorhahn 08.08.2003 10:01

[Java] variabel Klasseninstanzen erstellen
 
ist es möglich in java je nach einer variablen verschiedene klassen zu instanzieren? is schwer zu erklären.
sollte etwa folgendermaßen sein:

String kl=new String("TestKlasse")
kl neueinstanz=new kl()



so ungefähr. das geht logischerweise nicht, aber gibts vielleicht nen workaround? vielleicht dass man in den string den code

String kl=new String("TestKlasse tk=new TestKlasse()")

schreibt und dies dann ausführen lässt? vielleicht hats ja einr kapiert.

myope 08.08.2003 10:24

ja. mit vererbung.
erstelle eine neue klasse die zb String erweitert.
dann kannst du eine variable anlegen und mit String oder der neuen klasse instanzieren.

moorhahn 08.08.2003 10:32

hm, weiß ned wirklich wie du das meinst.

moorhahn 08.08.2003 10:42

neuer erklärungsversuch:

umgelegt auf zb delphi würde das etwa folgendermaßen aussehen:

var test:String;
begin
test:='c:\test\testprogramm.exe';
exec(test);
end



das ganze ist nämlich für ein menü, sollte so ne kleine arcade-game-sammlung werden. dazu gibts eine klasse fürs menü, und dann gibts noch eine klasse für die einzelnen menüelemente. ein feld der element-klasse ist application, darin steht der name der klasse des arcade-games. der instanz der menüklasse fügt man dann die einzelnen elemente zu. dann sollte je nach auswahl im menü die jeweilige klasse (deren name im feld application des gewählten menüelements steht) instanziert, bzw "ausgeführt" werden.

myope 08.08.2003 13:30

nun. ich weiß wirklich nicht was du meinst.
also du hast eine klasse menue.
und noch eine klasse menueEintrag.

in der klasse menue eine möglichkeit mehrere instanzen von menueEintrag hinzuzufügen und somit das menü aufzubauen

ist das noch korrekt?

so und wann brauchst du nun versch. instanzierungen?

blauesau 08.08.2003 15:12

Ich verstehe leider auch nicht, was du meinst...

Code:

var test:String;
begin
test:='c:\test\testprogramm.exe';
exec(test);
end

sähe halt so aus:
Code:

String test = "c:\\test\\testprogramm.exe";
exec(test);

:confused:

blauesau 08.08.2003 15:15

Ein Versuch noch, aber ich kann nur raten, da mir schleierhaft ist, was du wirklich willst...

Vielleicht suchst du nach einer Collection, z.b. Vector.

Code:

do {
  Vector.add(new String("blablabla"));
}
while(...)


Tarjan 08.08.2003 18:55

Also so wie ich das verstanden habe will er ein Objekt einer Klasse instazieren, je nachdem welchen String er verwendet.

Und das funktioniert in Java mit der Klasse Class:
Code:

String klassenname = "java.util.Date";
Class classobject = Class.forName(klassenname);
Object newObject = classobject.newInstance();

Damit ist newObject ein Dateobjekt. Und je nachdem was du im String angibst kannst so jede beliebige Klasse erzeugen.

moorhahn 08.08.2003 20:03

war schwer zu beschreiben.
tarjan hats richtig verstanden, danke dir und auch den anderen die versucht haben, die erklärung zu verstehen und zu antworten :) .

Tarjan 08.08.2003 20:16

Aber Achtung, wenn du das Objekt wie oben konstruiert hat es anfangs nur die Eigenschaften eines Object Objekts. Du musst später casten um die Date Funktionalität verwenden zu können.

Für dich wäre am besten ein Factory Objekt zu schreiben, welches die benötigten Objekte erzeugt. Funktioniert nach dem Factory Design Pattern:
http://skripte.informatik.fh-ge.de/~...R2_Skript9.pdf
http://exciton.cs.oberlin.edu/javare...oryPattern.htm
http://gsraj.tripod.com/design/creat...y/factory.html


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag