기본적으로 각 Person 객체에 대해 여러 주소를 저장하려고합니다. 필자는 Person 클래스의 TreeSet에 Address 객체를 저장하여이를 달성하기로 결정했습니다. 본질적으로 나는 TreeSet에 생성 한 각 Address 객체의 toString()을 저장하려고합니다. 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");
}
}
오류 메시지입니다 ... 지정된 행에 오류가 발생 나중에 각 속성을 개별적으로 조작 할 수 있기를 원하기 때문입니다. 또한 각 Person 객체에 대해 여러 주소를 저장할 수 있도록 주소 클래스의 여러 반복이 필요하므로 Person 클래스에 Address 클래스 속성을 저장하지 않으려합니다.