Objekt aus Arraylist in andere Arraylist kopieren?

Simxn14

Neues Mitglied
Hallo. Ich habe einen Onlineshop als Projektthema. Das Programm besteht aus 3 Klassen: Onlineshop, Artikel und Bestellung. In Onlineshop werden Artikel (artikeln) und Bestellungen (bestellungen) erstellt und in der jeweiligen, in Klammer stehenden Arraylist gespeichert. Außerdem wird eine Arraylist namens artikelInBestellung erzeugt, in der man Artikel zu einer bestehenden Bestellung hinzufügt. Kann man vergleichen mit "In den Warenkorb legen".

Bei mir hakt es in der Klasse Bestellung bei der Methode produktHinzufügen. Hier soll der Benutzer die Artikelnummer eines (bestehendes) Produktes eingeben. Mit der Schleife wird die Artikelnummer gesucht und das Objekt dann in die Arraylist "artikelInBestellung" kopiert.

Dann kommt aber die Fehlermeldung "incompatible types: Artikel cannot be converted to Bestellung". Das muss heißen, dass es nicht möglich ist, ein Objekt aus einer Klasse in eine andere Klasse zu kopieren?

Weiß jemand, wie ich das lösen soll? Ich bin noch Anfänger und langsam geht mir die Geduld aus.

[CODE lang="java" title="Klasse Onlineshop"]import java.util.*;

public class Onlineshop
{
ArrayList<Artikel> artikeln;
private ArrayList<Bestellung> bestellungen;
ArrayList<Bestellung> artikelInBestellung;

public Onlineshop()
{
artikeln = new ArrayList<Artikel>();
bestellungen = new ArrayList<Bestellung>();
artikelInBestellung = new ArrayList<Bestellung>();
}

public void neuerArtikel(Artikel neuerArtikel)
{
artikeln.add(neuerArtikel);
}

public void neueBestellung(Bestellung neueBestellung)
{
bestellungen.add(neueBestellung);
}
}[/CODE]

[CODE lang="java" title="Klasse Bestellung" highlight="22"]public class Bestellung
{
private double preis;
private String bestellnummer;
private String lieferung = null;
private double summe; //summe der Artikel ohne MWSt
public static String artikelnummer;
ArrayList <Artikel> artikeln;
ArrayList <Bestellung> artikelInBestellung;

public Bestellung(String bestNr)
{
bestellnummer = bestNr;

}

public void produktHinzufügen(String artNr){

for(Artikel artikelnummer : artikeln){ //for(Elementtyp element : sammlung){
if(Artikel.artikelnummer.equals(artNr)){
int index = artikeln.indexOf(artikelnummer);
artikelInBestellung.add( artikeln.get(index)); // hier kommt die Fehlermeldung

}
}
summe += preis;
//return null;
}
public String getArtikelnummer(){
return artikelnummer;
}
public void ausgeben()
{

for (Bestellung bestellung : artikelInBestellung){

//Artikel.details();
System.out.println("Artikelname " + Artikel.artikelname);
System.out.println("Artikelnummer " + artikelnummer);
System.out.println("Preis " + preis);
}

/*for(int i = 0; i < artikelInBestellung.size(); i++){
System.out.println(artikelInBestellung.get(i));
}*/
}

public int anzahlProdukte(List <Artikel> artikeln)
{
return artikelInBestellung.size();
}[/CODE]

[CODE lang="java" title="Klasse Artikel"]public class Artikel
{
public static String artikelname;
public static String artikelnummer;
public static double preis;


public Artikel(String ArtName, String ArtNr, double Preis) //ArtNr - Artikelnummer; ArtN - Artikelname
{
artikelname = ArtName;
artikelnummer = ArtNr;
preis = Preis;
}

public static void details()
{
System.out.println("Artikelname: " + artikelname);
System.out.println("Artikelnummer: " + artikelnummer);
System.out.println("Preis: " + preis);
}[/CODE]

Für jede Hilfe wäre ich dankbar.
 
artikelInBestellung ist eine List von Bestellung und daher kann man da keine Artikel hinzufügen.

Das soll evtl eine List von Artikel sein statt von Bestellung.
 
Wie soll das auch funktionieren? Du heißt ein Objekt vom Typ "Artikel" und versuchst in einer Liste, die nur Objekte vom Typ "Bestellung" speichern kann reinzupacken. Nimm mal an, du hast ein Paket, wo du Glühbirnen reintun kannst. Dann kannst du da keinen LKW reinpacken - das geht schlicht nicht. Woher soll Java wissen, wie das geht? Da musst du schon eine Methode schreiben, die einen Artikel nimmt und ein Objekt vom Typ Bestellung daraus erzeugt und die Felder entsprechend setzt.
 

Zurück
Oben