public class CombinationTester {
public static void main(String[] args) {
Combination comb= new Combination();
Combination combKopie= comb.copy( comb);
}
Code:
public class Combination {
public Combination copy (Combination c) {
return new Combination();
}
}
ich weiss leider nicht weiter wie ich in der public class Combination mit dem Objek Combination c umgehen soll.
public class Combination implements Cloneable{
// implements Cloneable nicht vergessen sonst wirft er dir eine java.lang.CloneNotSupportedException
public static void main(String[] args) {
Combination comb= new Combination();
System.out.println(comb.getIrgendwas());
System.out.println(comb.getNochwas());
Combination combKopie= comb.copy( comb);
System.out.println(combKopie.getIrgendwas());
System.out.println(combKopie.getNochwas());
}
private Object irgendwas = new Object();
private Object nochwas = new Object();
public Object getIrgendwas() {
return irgendwas;
}
public void setIrgendwas(Object irgendwas) {
this.irgendwas = irgendwas;
}
public Object getNochwas() {
return nochwas;
}
public Combination copy (Combination c) {
try{
return (Combination)c.clone();
}
catch (CloneNotSupportedException err){
// CloneNotSupportedException kann eh nicht geworfen werden
throw new RuntimeException(err);
}
}
}
Das ist aber wie im Chat bereits gesagt keine Tiefe kopie und irgendwie eine schwachsinnige Hausaufgabe wenn ihr das über clone() lösen sollt.
[edit]
jo das mit dem
Code:
public Combination copy (Combination c) {
Combination combKopie = new Combination();
combKopie.zahlenfolge = c.zahlenfolge;
return combKopie;
}
wäre auch eine Lösungsmöglichkeit, kommt halt drauf an wie ihr was kopieren sollt.
Also das macht mich noch wahnsinnig. Ich kriegs nicht mit der Methode zum laufen. Wie gesagt, c.clone(); würde funktionieren, aber meine Methode funzt nicht.
Ich poste ich mal meinen Code:
Klasse:
Code:
public class Combination implements Cloneable // Klasse klonbar machen
{
private int arraysize;
int alter;
private int [] ifeld=new int[arraysize]; //Hier stehen die Felder
//*****************************************************************************
public int getArraySize()
{
return arraysize;
}
public void setArraySize(int i)
{
arraysize=i;
}
public void init(int[] a) //Hier stehen die Methoden
{
ifeld=a;
}
public void print()
{
int i=0;
do{
System.out.print(ifeld[i]+" ");
i++;
}
while(i<arraysize);
System.out.println();
}
//******************************************************************************
protected Object clone() {
try {
Combination combi = (Combination) super.clone();
return combi;
} catch(CloneNotSupportedException e) { //Bei klonen überschreiben
return null;
}
}
//******************************************************************************
public Combination copy (Combination c) {
Combination cnew = new Combination(); //Funktioniert nicht???
cnew.alter = c.alter;
return cnew;
}
}
Main Klassse:
Code:
public class CombinationTester
{
public static void main(String[] args)
{
//************************************************************************
Combination c=new Combination(); //Objekt erzeugen
Combination c2=new Combination(); //Objekt erzeugen
c.setArraySize(20); //Arraygroesse festlegen
c2.setArraySize(20); //Arraygroesse festlegen
int [] intArray=new int[c.getArraySize()];
System.out.println("Zahlenfolge: ");
for(int i=0;i<intArray.length;i++)
{
intArray[i]=i+1; //Bsp. einer Zahlenfolge
}
c.init(intArray); //Array übergeben
c.print(); //Folge darstellen
//c2=(Combination)c.clone(); // das würde funktionieren
c.alter=5; //alter nur zum Testen des clonens
System.out.println(c.alter);
c2.copy(c);
System.out.println(c2.alter);
}
}
Und wenn die Methode eine kopie des übergebendes Objektes zurück geben soll
Code:
public static Combination copy (Combination c) {
Combination cnew = new Combination();
cnew.alter = c.alter;
return cnew;
}
// Aufruf wäre : Combination c2 = Combination.copy(c1);
Sowas
Code:
public Combination copy (Combination c) {
...
}
ist eigentlich aus meiner Sicht sinnfrei, denn du hast 3 Combination Objekte mit denen du arbeiten sollst:
c,
das Objekt dass zurück gegebn werden soll
und this
Das dort oben sind nur einige Möglichkeiten wie die Methode aussehen könnten. Aber eure Vorgabe ist irgendwie hohl.
Oder du sagst mal genau was ihr machen sollt.