AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [Java] Neues Objekt vom anderen Objekt
Thema durchsuchen
Ansicht
Themen-Optionen

[Java] Neues Objekt vom anderen Objekt

Ein Thema von xZise · begonnen am 26. Jan 2010 · letzter Beitrag vom 27. Jan 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

[Java] Neues Objekt vom anderen Objekt

  Alt 26. Jan 2010, 11:09
Hallo,
ich wollte mal folgendes fragen: Ich habe ein Objekt einer bestimmten Klasse und möchte von der Klasse des Objekt ein neues Objekt erstellen.
Also es gibt das Interface i und die Unterklassen s und t und das Objekt o vom Typ i. Jetzt erstelle ich ein neues Objekt i o = new s() und würde gerne jetzt das in der obigen Zeile wiederholen. Wenn das obige aber ein t ist, dann soll er nicht ein Objekt von s sondern von t erzeugen.
Code:
i o = null;

if (Math.random() < 0.5) {
  o = new s();
} else {
  o = new t();
}

// Jetzt will ich das er das obige wiederholt:
o = new (Klasse von o)();
Ich hoffe ihr versteht was ich meine.

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#2

Re: [Java] Neues Objekt vom anderen Objekt

  Alt 26. Jan 2010, 11:32
Ich habe hier keine passende Entwicklungsumgebung, aber gibt es nicht eine Methode oder Eigenschaft getClass oder className?
Das kannst du dann zwar nicht genauso einbauen, wie du es oben in deinem Code stehen hast, da das soweit ich weiß einen String zurückgibt. Aber den kannst du dann ja immerhin abfragen und entsprechend dein neues Objekt erstellen
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

Re: [Java] Neues Objekt vom anderen Objekt

  Alt 26. Jan 2010, 11:42
Und zur Not kannst Du Dir ja in einer Variablen merken, welchen Typ Du gerade erzeugt hast.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: [Java] Neues Objekt vom anderen Objekt

  Alt 26. Jan 2010, 11:45
Hallo,

hast Du hier nicht eine grundlegend falsche Auffassung von Interfaces? Der Witz ist ja, dass es egal ist, welche Klasse sich dahinter verbirgt. Ich habe jetzt auch gerade keine IDE da, aber es würde mich wundern, wenn es ein getClass() bei Interfaces gäbe.
Wenn Du Zugriff auf das Interface hast, kannst Du ja eine Methode New() implementieren, die jeweils ein neues Objekt zurück liefert. Das ist die saubere Lösung.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: [Java] Neues Objekt vom anderen Objekt

  Alt 26. Jan 2010, 13:05
Zitat von xaromz:
Hallo,

hast Du hier nicht eine grundlegend falsche Auffassung von Interfaces? Der Witz ist ja, dass es egal ist, welche Klasse sich dahinter verbirgt.[...]
Aber im Laufe des Programms kann man ein Objekt halt nach einem Verfahren erstellen (es handelt sich um eine Graphklasse einmal als Adjazenzmatrix und einmal als -liste). Und jetzt wollte ich, dass man einfach ein neues Objekt von der gleichen Variante erstellen kann.

Aber ich glaube das mit .New() dürfte da am saubersten sein.

Und es gibt die Methode .getClass() die gibt zwar kein String zurück, aber so richtig was anfangen kann ich damit auch nicht.

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: [Java] Neues Objekt vom anderen Objekt

  Alt 26. Jan 2010, 13:18
Hallo,
Zitat von xZise:
Aber im Laufe des Programms kann man ein Objekt halt nach einem Verfahren erstellen (es handelt sich um eine Graphklasse einmal als Adjazenzmatrix und einmal als -liste). Und jetzt wollte ich, dass man einfach ein neues Objekt von der gleichen Variante erstellen kann.
Objekte ja, aber nur von Objekten und nicht von Interfaces.

Zitat von xZise:
Und es gibt die Methode .getClass() die gibt zwar kein String zurück, aber so richtig was anfangen kann ich damit auch nicht.
Die wird eine Class zurückgeben. Das ist ein Objekt aus der Reflektion. Darüber kannst Du dann neue Objekte erstellen oder Eigenschaften der jeweiligen Klasse abfragen. Bei einem Interface sollte die Class aber den Bauplan des Interfaces enthalten und nicht den der implementierenden Klasse. Und einfach "aus der Luft" ein neues Interface zu erstellen ist ja Blödsinn (und funktioniert auch nicht).

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

Re: [Java] Neues Objekt vom anderen Objekt

  Alt 26. Jan 2010, 14:20
Naja ich wollte ja nicht vom Interface was erstellen, dies sollte ja nur als „gemeinsamer“ Nenner dienen.

Damit wäre auch .getClass() wieder richtig, da ich die letzte Klasse von diesem Objekt haben wollte.

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: [Java] Neues Objekt vom anderen Objekt

  Alt 26. Jan 2010, 18:22
Zitat von xZise:
Aber im Laufe des Programms kann man ein Objekt halt nach einem Verfahren erstellen (es handelt sich um eine Graphklasse einmal als Adjazenzmatrix und einmal als -liste).
Dann fügst du eben noch ein GraphFactory-Interface mit Graph getNewGraph() hinzu . In .NET würde das auch über Generics funktionieren, aber da die JVM keine besitzt...

Zitat von xaromz:
Bei einem Interface sollte die Class aber den Bauplan des Interfaces enthalten und nicht den der implementierenden Klasse.
getClass sollte allerdings den Runtime-Typ zurückliefern, getClass().newInstance() dürfte also passen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#9

Re: [Java] Neues Objekt vom anderen Objekt

  Alt 26. Jan 2010, 18:29
Hallo,
Zitat von Khabarakh:
Zitat von xaromz:
Bei einem Interface sollte die Class aber den Bauplan des Interfaces enthalten und nicht den der implementierenden Klasse.
getClass sollte allerdings den Runtime-Typ zurückliefern, getClass().newInstance() dürfte also passen.
ich bin mir da nicht so sicher. Es ist ja getClass() des Interfaces und nicht des darunterliegenden Objekts.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: [Java] Neues Objekt vom anderen Objekt

  Alt 26. Jan 2010, 19:29
Zitat von xaromz:
ich bin mir da nicht so sicher. Es ist ja getClass() des Interfaces und nicht des darunterliegenden Objekts.
Weder noch, es ist Object.getClass . Wie auch immer der Code darin aussieht, er kann schlecht wissen, ob die Variable, über die er aufgerufen wird, ein Interface oder eine Klasse ist. Der Compiletime-Typ geht beim Kompilieren verloren.

Zusätlich zu "Returns the runtime class of an object." gehe ich einfach mal davon aus, dass sich hier die JVM wie die CLR und wahrscheinlich alle anderen Plattformen verhält.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz