I'm trying to call a method, setPostal(String post) I made from an anonymous class, but for some reason the compiler doesnt even recognize it in main. Any reason why this is? Part of my code (address is an inner class of Student):
Student
public class Student implements Gradeable, Cloneable {
String name;
int id;
Address address;
public Student() {
name = "unknown";
address = new Address();
}
public Student(String name, int id, Integer... option) {
this.name = name;
this.id = id;
if (option.length > 0) {
if (option[0] > 0) {
address = new Address() {
String postal;
public void setPostal(String post) {
postal = post;
}
@Override
public String toString() {
return "Street: " + street + " | number: " + number
+ " | town: " + town + " | province: " + province
+ " | Postal Code: " + postal;
}
};
}
} else {
address = new Address();
}
}
Address getAddress() {
return address;
}
void setAddress(Address address) {
this.address = address;
}
public static void main(String[] args) throws CloneNotSupportedException, InterruptedException {
Student test = new Student("ryan", 41254, 1);
test.getAddress().setPostal("L1G 6h9") // Compiler: Cannot resolve symbol 'setPostal'
}
}
Address
public class Address implements Cloneable {
String street;
int number;
String town;
String province;
String zip;
public Address() {
}
public Address(String street, int number, String town,
String province, String zip) {
this.street = street;
this.number = number;
this.town = town;
this.province = province;
this.zip = zip;
}
String getStreet() {
return street;
}
int getNumber() {
return number;
}
String getTown() {
return town;
}
String getProvince() {
return province;
}
String getZip() {
return zip;
}
@Override
public String toString() {
return "Street: " + street + " | number: " + number
+ " | town: " + town + " | province: " + province
+ " | ZIP: " + zip;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Address)
if (((Address) obj).getStreet().equals(street)
&& ((Address) obj).getNumber() == number
&& ((Address) obj).getTown().equals(town)
&& ((Address) obj).getProvince().equals(province)
&& ((Address) obj).getZip().equals(zip)){
System.out.println("Address equal");
return true;
}
System.out.println("Address not equal");
return false;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
Addressclass, or at least an interface for it, which includessetPostal(String):void.Addressclass?Addressnested insideStudent? Please fix your code. Also, why isAddressnotpublic? I movedAddressout ofStudent, looks like you just pasted it wherever.