我有两个类,一个是House,它肯定具有其他属性,但是我只包括了遇到问题的一个类:
public class House {
private Address addressOfHouse;
public House (Address addressOfHouse){
this.setAddressOfHouse(addressOfHouse);
public Address getAddressOfHouse() {
return addressOfHouse;
}
public void setAddressOfHouse(Address addressOfHouse) {
this.addressOfHouse = addressOfHouse;
}
}
另一个是地址:
public class Address {
public String streetName;
public String city;
public int postalCode;
public Address (String streetName, String city, int postalCode){
this.streetName=streetName;
this.city=city;
this.postalCode=postalCode;
}
public String getStreetName() {
return streetName;
}
public String getCity() {
return city;
}
public int getPostalCode() {
return postalCode;
}
}
当我创建一个对象“ house”时,为其设置一个地址,然后尝试调用方法“ getAddressofHouse”:
public class Main {
public static void main(String[] args) {
Address address2 = new Address("Y", "Praha", 11000);
House house2 = new House (address2);
System.out.println(house2.getAddressOfHouse());
它没有给我房子的地址。它给了我这个:
com.company.Address@7f63425a
我的问题是知道我对“房屋”类中的地址的设定者和执行者的处理不正确。这是我一直在做的一个练习,它要求我有一个名为“ addressOfHouse”的属性,其数据类型为“ Address”(类为“ Address”)。因此,我想我必须通过“ getAddressOfHouse”方法来调用房屋的地址,但是我一直在尝试,但根本没有用。你能帮我吗?如果您认为我应该将整个代码放在这里,我会做的。我先谢谢大家。
答案 0 :(得分:4)
System.out.println(house2.getAddressOfHouse());
输出
com.company.Address@7f63425a
这是Object.toString()
的默认实现。
如果要查看更多织法,则必须在public String toString() { }
类中重写Adress
方法。例如:
public String toString() {
return "Address{" +
"streetName='" + streetName + '\'' +
", city='" + city + '\'' +
", postalCode=" + postalCode +
'}';
}
答案 1 :(得分:1)
您需要向该地址添加toString()方法。如果没有,它将在尝试打印时将对象的参考作为默认值打印。
请参阅:toString() doc. 我在这里重复:
公共字符串toString()返回字符串的字符串表示形式 宾语。通常,toString方法返回一个字符串,该字符串 “用文字表示”此对象。结果应该简洁明了 易于阅读的信息丰富的表示形式。它是 建议所有子类都重写此方法。 toString 类Object的方法返回一个字符串,其中包含 对象是实例的类,符号字符“ @”, 以及哈希码的无符号十六进制表示形式 宾语。换句话说,此方法返回的字符串等于 值:
getClass()。getName()+'@'+ Integer.toHexString(hashCode())
返回:对象的字符串表示形式。