WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 24.09.2004, 12:26   #1
oliva
Newbie
 
Registriert seit: 24.09.2004
Beiträge: 3


Standard java - objekte der superklasse kopieren ?

hi leute,

angenommen ich habe:

public class A
public class B extends A

A a = ...

(wobei alle Attribute von A und B über Getter & Setter Methoden les/schreibbar sind)

und möchte nun ein Objekt der Klasse B erzeugen aus dem existenten Objekt a und dann noch zusätzliche Attribute setzen.

was ich halt irgendwie umgehen möchte ist:

B b = new B();
b.setX(a.getX());
b.setY(a.getY());
...

Also ich möchte im Prinzip machen:
B b = a; (Das funktioniert ja nicht)
b.set... (zusätzliche attribute)

Kann ich das irgendwie machen ohne dabei über Reflection das Resultat aller getter Methoden von a durch die Setter Methoden von b zu setzen ?

Ein clone oder ähnliches zu verwenden, gfallt ma nicht, da bei erweiterungen auch darin änderungen gemacht werden müssten.

any ideas ?

danke, oliva
oliva ist offline   Mit Zitat antworten
Alt 24.09.2004, 17:32   #2
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

So wie ich das verstehe hast du ein Objekt a der Klasse A und willst einem Objekt b der Klasse B die Eigenschaften von a zuweisen.
b=a wirft natürlich eine Exception. Du kannst aber einen Typecast machen: b=(B)a;

Wenn ich deinen Post richtig verstanden habe, sollte es so funktionieren.

Jak
<edit>2 Tippfehler korrigiert</edit>
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 24.09.2004, 21:14   #3
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

Nein, ein Downcast ist nicht möglich. Kann auch gar nicht gehen, da die Kindklasse mehr Eigenschaften haben kann als die Mutterklasse.

Die einzige Möglichkeit ist jedes Feld entweder per Reflection oder per Hand aufs Kindobjekt zu übertragen.
____________________________________
Was ist klein, grün und dreieckig?
Ein kleines grünes Dreieck!


Bahnübergänge sind die härtesten Drogen der Welt! Ein Zug und du bist weg!
Tarjan ist offline   Mit Zitat antworten
Alt 25.09.2004, 00:56   #4
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Ooops, stimmt natürlich.
Hab' anscheinend zu lange nicht mehr Java programmiert. Hab' das mit einem anderen Fall verwechselt (ich hatte eine Linked List aus A's die mit Objekten x1,x2,x3 der Klassen B,C,D gefüllt war; B,C,D waren Kinder von A und hab' daher D x4=(D)x3 machen können).

Was du machen kannst ist, das du ein Objekt der Klasse B erzeugst und es in Methoden verwendest die Objekte der Klasse A erwarten:

void setA(A myObj){
myObj.setusw...
}
Sollte man auch mit einem B füttern können (wenn ich nicht schon wieder Blödsinn red').

Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 25.09.2004, 20:44   #5
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

Kinder haben ja gerade auch alle Eigenschaften der Mutterklasse und sind deswegen auch so verwendbar. Nur umgekehrt gehts halt nicht.
____________________________________
Was ist klein, grün und dreieckig?
Ein kleines grünes Dreieck!


Bahnübergänge sind die härtesten Drogen der Welt! Ein Zug und du bist weg!
Tarjan ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:06 Uhr.


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