H
hmpfMhmmmm
Gast
Habe mal ein kleines Beispiel erstellt um mein Problem auch zu veranschaulichen.
Klasse Auto
Klasse Schiff
Klasse Warenhaus
Und die das hier:
So und nun zur Erklärung:
Ich habe die Klasse MeinProgramm oder sonstige Klasse wo ich das Warenhaus einmal Initialisiere und dann Container baue die eine Methode enthält die mir das Objekt zurück gibt, das ich da rein gepackt habe. Diese Container adde ich einer Liste (siehe Warenhaus).
Nun möchte ich im Warenhaus in der Methode ladeAus() in einer for-each schleife die Liste ausgebe, nun möchte ich aber auf die Methode der jeweiligen Klasse zugreifen können. Ob jetzt getAnzahl() oder getEinSchiffMerkmal oder getEinAutoMerkmal.
Wie kann ich es anstellen das ich auf die Methode im Warenhaus zugreifen kann?
Im übrigen kann ich z.B kein Interface erstellen für Auto und Schiff um eine Gemeinsamkeit zu erschaffen.
P.S Das dient nur als Beispiel!!!
Danke
Wenn was noch unklar sein sollte, ich versuche mein bestes diese aus dem Weg zu schaffen
Klasse Auto
Java:
public class Auto {
private int anzahlTueren;
public Auto(int anzahlTueren) {
this.setAnzahlTueren(anzahlTueren);
}
public int getAnzahl() {
return anzahlTueren;
}
public void setAnzahl(int anzahlTueren) {
this.anzahlTueren = anzahlTueren;
}
}
Klasse Schiff
Java:
public class Schiff {
private int anzahlMasten ;
public Schiff(int anzahlMasten ) {
this.setAnzahlMasten(anzahlMasten);
}
public int getAnzahl() {
return anzahlMasten ;
}
public void setAnzahl(int anzahlMasten ) {
this.anzahlMasten = anzahlMasten ;
}
}
Klasse Warenhaus
Java:
import java.util.ArrayList;
import java.util.List;
public class Warenhaus<T>{
private List<Container<T>> liste = new ArrayList<Container<T>>();
public interface Container<T>{
T getMyObject();
}
public Warenhaus() {
}
public void addContainer(Container<T> container){
liste.add(container);
}
public void ladeAus(){
// Kein Casten erlaubt! Objekte von Auto und Schiff können nicht verändert werden.
for(Container<T> a : liste){
System.out.println(a.getMyObject() ??? );
}
}
}
Und die das hier:
Java:
public class MeinProgramm {
public static void main(String[] args) {
Warenhaus wh = new Warenhaus();
Container<Auto> container = new Container<Auto>() {
@Override
public Auto getMyObject() {
return new Auto(2);
}
};
wh.addContainer(container);
Container<Schiff> container2 = new Container<Schiff>() {
@Override
public Schiff getMyObject() {
return new Schiff(2);
}
};
wh.addContainer(container2);
wh.ladeAus();
}
}
So und nun zur Erklärung:
Ich habe die Klasse MeinProgramm oder sonstige Klasse wo ich das Warenhaus einmal Initialisiere und dann Container baue die eine Methode enthält die mir das Objekt zurück gibt, das ich da rein gepackt habe. Diese Container adde ich einer Liste (siehe Warenhaus).
Nun möchte ich im Warenhaus in der Methode ladeAus() in einer for-each schleife die Liste ausgebe, nun möchte ich aber auf die Methode der jeweiligen Klasse zugreifen können. Ob jetzt getAnzahl() oder getEinSchiffMerkmal oder getEinAutoMerkmal.
Wie kann ich es anstellen das ich auf die Methode im Warenhaus zugreifen kann?
Im übrigen kann ich z.B kein Interface erstellen für Auto und Schiff um eine Gemeinsamkeit zu erschaffen.
P.S Das dient nur als Beispiel!!!
Danke
Wenn was noch unklar sein sollte, ich versuche mein bestes diese aus dem Weg zu schaffen