Peter Lind wrote:
> "Soren Staun Jorgensen" <ssj@get2net.dk> wrote in message
> news:P3lF6.1130$S4.787692@news101.telia.com...
> > Mit problem er at KlasseA eksistere både på min server og klient, hvorimod
> > KlasseB og interface KlasseC kun eksistere på klienten. Når klienten
> > modtager KlasseA fra serveren, skulle den gerne "konverteres" til KlasseB,
> > som altså garanteret har KlasseC's metoder.
(hm, hvor kom dette citerede fra? Går sunsite nu amok igen?)
> Ville den rigtigste løsning ikke være at lave en constructor i KlasseB, der
> modtager et KlasseA objekt som argument ?
> Denne KlasseB constructor skal så kalde en evt copy-constructor mht KlasseA
> { super( klasseAObjekt ); } eller også selv sætte alle (KlasseA) variable...
Det lyder meget fornuftigt i mine ører.
> Iøvrigt, er der andre der ved om der findes nogle smarte (java-korrekte)
> måder at lave sådan en copy-constructor på ?
Man kan bruge clone() metoden. Iøvrigt er en fantastisk nyttig
(sikker, omend død-ineffektiv) klasse denne SerialCloneable,
som er angivet i Core Java 2:
public class SerialCloneable implements Cloneable, Serializable
{
public final Object clone()
{
try
{
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream( bout );
out.writeObject(this);
out.close();
ByteArrayInputStream bin = new ByteArrayInputStream( bout.toByteArray() );
ObjectInputStream in = new ObjectInputStream( bin );
Object ret = in.readObject();
in.close();
return ret;
}
catch( Exception e )
{
// fejlhåndtering
}
}
når man så nedarver fra SerialCloneable, er man fri for at
implementere (og debugge) clone().
Ulrik Magnusson
--
"No method in our madness
just pride about our manner"
Adam & the Ants - "Kings of the Wild Frontier", do 1980
Visit my home page:
http://www.geocities.com/ulrikm