如何使用简单的getter和setter与android

42fyovps  于 2023-01-07  发布在  Android
关注(0)|答案(3)|浏览(146)

我有一个国家类,它有一个存储国家的数组列表。我创建了一个get和set来从数组列表的指定索引中添加和获取项目,但是我不工作。每当我从数组列表中调用索引时,我会得到一个越界异常,因为数组是空的,或者至少看起来是空的。

public class country extends Application {

    public ArrayList<country> countryList = new ArrayList<country>();
    public String Name;
    public String Code;
    public String  ID;

    public country()
    {

    }

    public country(String name, String id, String code)
    {
        this.Name = name;
        this.ID = id;
        this.Code = code;
    }

    public void setCountry(country c)
    {
        countryList.add(c);
    }

    public country getCountry(int index)
    {   
        country aCountry = countryList.get(index);
        return aCountry;
    }

调用setter函数,我在for循环中这样做,所以它添加了200多个元素

country ref = new country();

ref.setCountry(new country (sName, ID, Code));

那么当我想得到一个索引时

String name = ref.countryList.get(2).Name;

我做了同样的事情,但使用了一个本地数组列表,它填充得很好,我能够显示名称,所以数据源不是问题所在,无论我做了什么错误的设置,并在国家类的数组列表中获取数据

6za6bjd0

6za6bjd01#

您访问了不存在的索引。您只添加了一个国家/地区,因此您只能访问:

String name = ref.countryList.get(0).Name;

你真的应该重新考虑你的设计。public属性不是最好的实践方式。这就是为什么你应该首先编写getter和setter方法的原因。
你应该这样做:

public Country getCountry(int index)
{
    if(index < countryList.size())
    {
        return countryList.get(index);
    }
    return null;
}
ogq8wdun

ogq8wdun2#

String name = ref.countryList.get(2).Name;中,您试图获取列表中的第三个元素,而您只添加了一个...
它应该是String name = ref.countryList.get(0).Name;,您需要在未收到空指针异常之前进行检查

nvbavucw

nvbavucw3#

执行ref.countryList.get(0).Name,因为您只向列表中添加了1项。
我建议你多做点

ref.countryList.get(0).getName()

相关问题