Fondamentalement, ce que j'essaie de faire est de stocker plusieurs adresses pour chaque objet Person. J'ai décidé d'y parvenir en stockant des objets Address dans un TreeSet de la classe Person. Essentiellement je voudrais stocker le toString() de chaque objet d'adresse que je crée dans mon TreeSet. Je passe les propriétés d'un objet Address via la méthode addAddress() de la classe Person, qui transmet les propriétés au constructeur de la classe Address.Stockage de plusieurs objets Address dans un TreeSet à partir d'une classe Person
Je reçois une erreur sur la ligne spécifiée ...
public class Person {
private TreeSet<Address> addresses = new TreeSet<Address>();
public void addAddress(String type, String street, String city, String state, String zip) {
//ERROR ON THIS LINE BELOW
Address addressObj = new Address(type, street, city, state, zip);
addresses.add(addressObj);
}
}
public class Address {
private String type;
private String street;
private String city;
private String state;
private String zip;
@Override
public String toString() {
return street + " " + city + " " + ", " + state + " " + zip + ": " + type;
}
public Address(String type, String street, String city, String state, String zip) {
super();
this.type = type;
this.street = street;
this.city = city;
this.state = state;
this.zip = zip;
}
}
public class MainDriver {
public static void main(String[] args) {
Person p1 = new Person();
p1.addAddress("Home", "321 Den Ave", "Orlando", "FL", "32792");
p1.addAddress("Work", "4411 Alligator Court", "Orlando", "FL", "32792");
}
}
Voici le message d'erreur:
Exception in thread "main" java.lang.ClassCastException: Address cannot be cast to java.lang.Comparable
at java.util.TreeMap.compare(TreeMap.java:1294)
at java.util.TreeMap.put(TreeMap.java:538)
at java.util.TreeSet.add(TreeSet.java:255)
at Person.addAddress(Person.java:64)
at MainDriver.main(MainDriver.java:9)
Pour être clair: Je ne veux pas stocker l'adresse dans une chaîne parce que je veux être capable de manipuler chaque propriété individuellement plus tard. Je ne souhaite pas non plus que les propriétés de classe d'adresses soient stockées dans la classe Personne car j'ai besoin de plusieurs itérations de la classe Address pour pouvoir stocker plusieurs adresses pour chaque objet Person.