基本的には、各Personオブジェクトに複数のアドレスを格納するのが基本です。私は、PersonクラスのTreeSetにAddressオブジェクトを格納することでこれを達成することにしました。基本的には、作成した各AddressオブジェクトのtoString()をTreeSetに格納したいと考えています。 Addressクラスのコンストラクタにプロパティを渡すPersonクラスのaddAddress()メソッドを通じて、Addressオブジェクトのプロパティを渡します。PersonクラスからTreeSetに複数のAddressオブジェクトを格納する
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)
明確にする:
私は指定された行にエラーが表示される...ここ
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");
}
}
はエラーメッセージです私は1つの文字列のアドレスを格納する必要はありません後で個々のプロパティを個別に操作できるようにしたいからです。また、各Personオブジェクトの複数のアドレスを格納できるように、Addressクラスの複数の繰り返しが必要なため、PersonクラスにAddressクラスのプロパティを格納する必要はありません。