如何确保getter不为null

时间:2017-08-15 14:08:52

标签: java

这是一个转储问题,抱歉我一直没有使用java。

我有一个setter / getter类ListMainItem我想设置并从中获取一个String,但我得到null值。

    ListMainItem object = new ListMainItem();
    String[] images = {"A","B","C"};

    final ArrayList<ListMainItem> list = new ArrayList<ListMainItem>();
    for (int i = 0; i < images.length; ++i) {
        object.setImages(images[i]);
        list.add(object);
        String test = object.getImages();
        System.out.print(test);

值测试始终为null我在这里做错了

Listmain类

public class ListMainItem  implements Parcelable{


    String id;
    //String name;
    public String url;
    String images;

    ListMainItem (Parcel in){
        this.id = in.readString();
        //   this.name = in.readString();
        this.url = in.readString();
        this.images= in.readString();
    }

    public ListMainItem() {
    //    this.id = id;
    //    this.url = url;
          this.images = images;
    }

    @Override
    public int describeContents() {
        return 0;
    }


    public void setUrl(String url) {
        this.url = url;
    }

    public String getUrl() {
        return url;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getId() {
        return id;
    }

    public void setImages(String Image)
    {
        this.images=images;
    }
    public String getImages()
    {
        return images;
    }
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(this.id);
        // dest.writeString(this.name);
        dest.writeString(this.url);
        dest.writeString(this.images);

    }

    public static final Parcelable.Creator<ListMainItem> CREATOR = new Parcelable.Creator<ListMainItem>() {
        public ListMainItem createFromParcel(Parcel in) {
            return new ListMainItem(in);
        }

        public ListMainItem[] newArray(int size) {
            return new ListMainItem[size];
        }
    };



}

4 个答案:

答案 0 :(得分:2)

public void setImages(String Image) {
    this.images = images;
}
此上下文中的

images等于this.images - 您将此设置为自身,并忽略String Image输入参数。

如果你想要这个,请做`this.images = Image&#34;。坚持惯例并放弃大写字母也是一个好主意:

public void setImages(String images) {
    this.images = images;
}

答案 1 :(得分:1)

你的二传手是错的

public void setImages(String Image)
    {
        this.images=images;
    }

param是Image,因此image引用了全局变量(错误的case break参考)。

答案 2 :(得分:1)

这是捕捉

public void setImages(String Image)
    {
        this.images=images;
    }

您需要将setImages(String Image)更改为setImages(String images)

另外,我想知道你的代码是否真的编译正确,因为下面的代码行似乎没有效果。您是按字符数组初始化String数组吗?

String images[] = {'A','B','C'};

建议纠正:

以下代码行是分配给自己的示例。你应该对作业进行评论。

public ListMainItem() {
//    this.id = id;
//    this.url = url;
      this.images = images;
}

每次迭代后,您都可以将新对象添加到列表中,而不是在此处执行,而是更新相同的对象并添加其引用。这也意味着所有元素都具有相同的对象引用,并将返回相同的值。因此,您应该在每次迭代中创建一个新对象。

for (int i = 0; i < images.length; ++i) {
    object = new ListMainItem();
    object.setImages(images[i]);
    list.add(object);

答案 3 :(得分:0)

我认为你已经初步化了&#39; String图像&#39;以错误的方式。尝试使用&#34; &#34;而不是&#39; &#39;在其中写入字符串值。 由于初始化期间的默认值,您将获得空值