我有以下代码:
public class Address {
private String city;
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
我还有另一个User
班ArrayList<Address>
作为成员变量,如下所示。
import java.util.ArrayList;
public class User {
private String name;
private ArrayList<Address> listOfAddresses ;
public ArrayList<Address> getListOfAddresses() {
return listOfAddresses;
}
public void setListOfAddresses(ArrayList<Address> listOfAddresses) {
this.listOfAddresses = listOfAddresses;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
在使用main方法的类中,我创建了具有两个成员变量的用户对象,例如name和listofAddresses
。现在,我需要一些有关如何使用用户对象设置listOfAddresses
值的指导。以及如何使用用户对象进行检索。
我的主要班级看起来像这样。
import java.util.ArrayList;
public class ArrayImpl {
public static void main(String[] args) {
User user = new User();
user.setName("First User");
Address address = new Address();
address.setCity("Melbourne");
user.setListOfAddresses(address);
}
}
我在user.setListofAddressess(address)
收到错误:
User类型中的setListOfAddresses(ArrayList)方法 不适用于参数(地址)
我的理解是listOfAddresses是Address
类型的ArrayList,因此我试图使用listOfAddresses
成员变量的setter方法来设置它的值。
有人可以帮助我如何设置listOfAddresses
并使用user
对象进行检索。
答案 0 :(得分:1)
您主要有两种选择:
丑陋的方式 您可以通过调用Getter,然后添加新地址,然后使用新列表调用Setter来检索当前的地址列表:
List<Address> addresses = user.getListOfAddresses();
addresses.add(address);
user.setListOfAddresses(addresses);
聪明而酷炫的方式
您的班级User
为代表提供了添加和删除地址的权限。为此,请在User
课程中为您的目的添加方法:
public void addAddress(Address a) {
this.listOfAddresses.add(a);
}
答案 1 :(得分:0)
User类中setListOfAddresses
的方法定义将ArrayList<Address>
类型的对象作为参数,但在您的主要文件中,您尝试传递一个Address实例。
这是正确的方法:
ArrayList<Address> addrList = user.getListOfAddresses();
if (addrList == null) {
//If it's the first address you insert, you have to initialize the ArrayList
addrList = new ArrayList<Address>();
}
addrList.add(address);
然后直截了当地检索每个地址:
ArrayList<Address> addrList = user.getListOfAddresses();
for (Address a : addrList) {
//do something with a....
}
答案 2 :(得分:0)
您正在尝试在用户对象中设置'address'类型的变量,但您应该设置ArrayList类型的对象。
User user = new User();
ArrayList<Address> ar=new ArrayList<>();
Address ad1=new Address();
ad1.setCity("Melbourne");
ar.add(ad1);
user.setListOfAddresses(ar);