Datentypen function(Vector<SuperClass>), Vector<Subclass>

momesana

Mitglied
Hi,
ich möchte eine Funktion schreiben die eine Liste/Vector vom einem bestimmten Typen "Person" entgegennimmt. Die Typen "Mitarbeiter" und "Kunde" sind von "Person" abgeleitet. es soll eine Funktion erstellt werden die von einer Datei die vor und nachnamen ausliest. Bei mir meckert aber der Compiler. Was kann ich tun?

Java:
private static void loadNames(String path, Vector<Person> list)
	{
		
	}
	
	public static void main(String[] args) {
		
		Vector<Mitarbeiter> mitarbeiter = new Vector<Mitarbeiter>();
		Vector<Kunde> kunden = new Vector<Kunde>();
		Firma firma = new Firma();
		firma.addMitarbeiter(new Mitarbeiter("Mehdi", "Salem Naraghi", 1));
		firma.addMitarbeiter(new Mitarbeiter("Hans", "", 2));
		
		loadNames("./kunden.dat"), kunden);
		loadNames("./mitarbeiter.dat", mitarbeiter);
                ...
          }
 
Zuletzt bearbeitet von einem Moderator:

eRaaaa

Top Contributor
In Zeile 14 ist erstmal eine Klammer zu viel die da nicht hin soll,

Dann gibts mehrere Möglichkeiten, entweder du sagst bei deinem Vector
Java:
Vector<Person>
//statt
Vector<Mitarbeiter>

oder bei der Methode
Java:
loadNames(String path, Vector<? extends Person> list)

oder beides :p
 

Atze

Top Contributor
versuch mal

Java:
private static void loadNames(String path, Vector<? extends Person> list)
    {
        
    }

:)

edit: zu spät! :/
 

diel2001

Bekanntes Mitglied
Du musst eine Klasse haben von denen alle erben und dann kannst du soetwas machen :
Java:
new Vector<? extends <SuperKlasse>>
Nur das Problem dabei ist du kannst dem Vector nichts mehr hinzufügen.
Am besten machst du dich mal schlau über Generics
 

momesana

Mitglied
In Zeile 14 ist erstmal eine Klammer zu viel die da nicht hin soll,

Dann gibts mehrere Möglichkeiten, entweder du sagst bei deinem Vector
Java:
Vector<Person>
//statt
Vector<Mitarbeiter>

oder bei der Methode
Java:
loadNames(String path, Vector<? extends Person> list)

oder beides :p
? extends funzt ganz wunderbar. Das Problem mit dem Vector<Person> wäre ist ja dass ich an Sich ne Liste von Kunden und Mitarbeiter erstellen will und die Funktion loadNames nur brauche um hier die Namen zu setzen. Nachher soll aber auf die "Mitarbeiter-" bwz. "Kunden"-spezifischen Eigenschaften direkt zugegriffen werden können. Daher brauche ich einen Vector<Mitarbeiter> bzw. Vector<Kunde>.
 

Ähnliche Java Themen

Neue Themen


Oben