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

moorhahn 09.08.2003 08:23

aha, ok, danke

jonix 09.08.2003 11:27

tarjan hat bereits alles gesagt, nur eines noch: der vorgang an und fuer sich nennt sich "dynamisches nachladen von klassen" - wie gesagt eine dynamische instanzierung von objekten. die besonderheit daran ist technisch gesehn, dass der java-compiler hier eine link-phase durchlaeuft (danke, fh, fuer das viele nutzlose wissen :-)

und: ich wuerd auch sehr stark dazu raten, design patterns (die factory in diesem falle) zu verwenden.

moorhahn 09.08.2003 11:44

mhm, hab zwar nüsse ahnung von patterns, und bin nicht unbedingt ein javaprofi, aber vielleicht wirds ja was mit den links von tarjan.

ein vernünftiges javabuch ist anscheinend auch nicht zu bekommen. das "handbuch zu java" (oder so ähnlich heißts, früher "goto java", kennt sicher jeder) ist so umfangreich, dass es sinnlos ist, das ganze zu lesen. dachte ja "Java 2" von "Galileo Computing" sieht nicht blöd aus, das ist keins von diesen dämlichen anfängerbüchern, aber dann ists teilweise so blöd geschrieben, andauernd mit verweisen auf andere kapitel und auch sonst einfach besch.... zu lesen.
aber das ist eine andere geschichte über die es ja schon haufenweise threads im wcm-forum gibt.

Tarjan 09.08.2003 12:48

Zwei gute Bücher zu Java ist "Core Java":
http://www.amazon.de/exec/obidos/ASI...079735-2563215
http://www.amazon.de/exec/obidos/ASI...079735-2563215
Aber Achtung, diese beiden sind eher Nachschlagewerke als Lehrbücher. Dafür kannst sie aber auch noch verwenden wenn du bereits Java kannst.
Zum Einstieg eigen sich sehr gut die Java Tutorials:
http://developer.java.sun.com/developer/onlineTraining/

Und Design Patters (Entwurfsmuster) sind Lösungsvorschläge für bestimmte Probleme der objektorientierten Programmierung. Zu empfehlen ist hier:
http://www.amazon.de/exec/obidos/ASI...079735-2563215

Man sollte mit der objektorientierten Programmierung aber schon etwas vertraut sein, bevor man sich mit Design Pattern beschäftigt.


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:47 Uhr.

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