Collection<String>

Status
Nicht offen für weitere Antworten.
A

Anarias

Gast
Hi,
ich hab ein Problem mit einer Collection. Ich hab sie ind er Superklasse definiert, aber kann sie in der main der Unterklasse nicht setzen.

Code:
public static void main (String[] args)
	{
		
		Kunde k1 = new Privatkunde(12,"Benjamin", "Bleich");
		k1.setTelnr(07221/83644);
		System.out.println(k1);
	}

Er sagt mir die ganze zeit, dass ich das nicht setzen kann, weil es ein int wert ist, aber selbst wenn ich "" für String setze nimmt er es nicht. Hat jemand eine Idee woran es liegen könnte???

Ach hier ist noch die Superklasse


Code:
package kundenverwaltung;
import java.util.*;


public abstract class Kunde {

	public int id;
	public String vorname;
	public String nachname;
	protected Collection<String>telnr;
	
	public Kunde() //leerer Konstruktor
	{
		super();
	}
	
	public Kunde(int id, String vorname, String nachname) //Konstruktor
	{
		
		super();
		this.id = id;
		this.vorname = vorname;
		this.nachname = nachname;
		telnr = new HashSet<String>();
	}
		
	
	public String toString()
	{
		return "ID: " + id + " Vorname: " + vorname + " Nachname: " + nachname + " Telefonnummer: " + telnr;
	}
	

	public boolean equals(Object obj)
	{
		if (this == obj)
			return true;
		if (obj instanceof Kunde == false)
			return false;
		
		Kunde k = (Kunde) obj;
		
		return k.equals(obj);
		
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNachname() {
		return nachname;
	}

	public void setNachname(String nachname) {
		this.nachname = nachname;
	}

	public String getVorname() {
		return vorname;
	}

	public void setVorname(String vorname) {
		this.vorname = vorname;
	}

	public Collection<String> getTelnr() {
		return telnr;
	}

	public void setTelnr(Collection<String> telnr) {
		this.telnr = telnr;
	}

	
}
 
B

Beni

Gast
setTelnr erwartet irgendeine Collection die aus Strings bestehst. Z.b. eine Liste aus Strings:
Code:
Kunde k = ...
ArrayList<String> list = new ArrayList<String>();
list.add( "1" );
list.add( "3" );
list.add( "habakuck" );

k.setTelnr( list );

Tjo, kann ich nicht viel mehr sagen. Lern halt mal die Basics :bae:
P.S. mit kryptischen Namen wie "telnr" wirst du nicht weit kommen.
P.P.S. vielleicht wäre anstelle einer Collection ein String, oder ein int-Array passender.
 
G

Guest

Gast
Beni hat gesagt.:
setTelnr erwartet irgendeine Collection die aus Strings bestehst. Z.b. eine Liste aus Strings:
Code:
Kunde k = ...
ArrayList<String> list = new ArrayList<String>();
list.add( "1" );
list.add( "3" );
list.add( "habakuck" );

k.setTelnr( list );

Tjo, kann ich nicht viel mehr sagen. Lern halt mal die Basics :bae:
P.S. mit kryptischen Namen wie "telnr" wirst du nicht weit kommen.
P.P.S. vielleicht wäre anstelle einer Collection ein String, oder ein int-Array passender.


Man ich lerne es doch gerade -.- und ich kann nix anderes als ne Collection nehmen, denn die steht in der aufgabenstellung. So selber :bae:
:D
 
B

Beni

Gast
Wie steht das denn in der Aufgabenstellung? Weil normalerweise baut man sowas in die Richtung:
Code:
public abstract class Kunde{
  private Collection<String> nummern = ... // irgendeine Collection

  public void addTelnr( String nummer ){
    nummern.add( nummer );
  }

  public void removeTelnr( String nummer ){
    nummern.remove( nummer );
  }
}
 

Bleiglanz

Gesperrter Benutzer
oder gleich
Code:
k1.getTelnr.add("07221/83644");
aber Beni hat natürlich recht: man sollte die Collection nicht "nach aussen" offenlegen

Code:
  public boolean equals(Object obj)
   {
      if (this == obj)
         return true;
      if (obj instanceof Kunde == false)
         return false;
      
      Kunde k = (Kunde) obj;
      
      return k.equals(obj);
      
   }
ist SEHR seltsam, gibt zu oft true zurück :)
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben