public class InvalidNameException extends IllegalArgumentException {
private Person person;
private String name;
public InvalidNameException(Person person, String name) {
this.person = person;
this.name = name;
}
public Person getPerson() {
return person;
}
public String getName() {
return name;
}
@Override
public String getMessage() {
return "Du prøvde å sette navnet til " + name + ", men det er ugyldig for " + person;
}
}
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
@Override
public String toString() {
return "[Person " + name + " (" + super.toString() + ")]";
}
public String getName() {
return name;
}
private String legalCharacters = "QWERTYUIOPÅASDFGHJKLØÆZXCVBNM";
public void setName(String name) {
for (int i = 0; i < name.length(); i++) {
char c = Character.toUpperCase(name.charAt(i));
if (legalCharacters.indexOf(c) < 0) {
throw new InvalidNameException(this, name);
}
}
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Person && ((Person) obj).name.equals(this.name)) {
return true;
}
return false;
}
public static void main(String[] args) {
Person person1 = new Person("Hallvard");
Person person2 = new Person("Hallvard");
Collection<Person> personer = Arrays.asList(person1, person2);
System.out.println(person1 == person2);
System.out.println(person1.equals(person2));
System.out.println(personer.contains(new Person("Hallvard")));
person1.setName("ruy389weyfsuid");
}
}
|