有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法为对象的数组赋值

我已经创建了一个自定义对象数组来存储其中的值

mNearbyPlaceMini[] mn = new mNearbyPlaceMini[googlePlacesObj.results.size()];
for (int i = 0; i < googlePlacesObj.results.size(); i++) {
    mGooglePlaces.place place = googlePlacesObj.results.get(i);
    Bitmap placeImageBitmap = null;
    try {
        URL imageUrl = new URL(place.icon);
        placeImageBitmap = BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream());
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    mn[i].placePicture = placeImageBitmap; //ERROR HERE
    mn[i].placeName = place.name;
    ...
}

但是,当我尝试为像这样的对象的属性赋值时,它会给我mn[i].placePicture = placeImageBitmap错误。placeImageBitmap具有有效值且不为null,因此我对对象数组所做的操作一定是错误的

public class mNearbyPlaceMini {
    public Bitmap placePicture;
    public String placeName;
    public Double latitude;
    public Double longitude;
    public mNearbyPlaceMini(){}
}

共 (2) 个答案

  1. # 1 楼答案

    您从未将对象分配给mn[i],因此它是空的

    使用mNearbyPlaceMini[] mn = new mNearbyPlaceMini[googlePlacesObj.results.size()];创建一个数组,但这只会创建一个googlePlacesObj.results.size()空对象数组

    必须使用mn[i] = new mNearbyPlaceMini();初始化数组中的每个对象。 只有这样,您才能访问mn[i],而不会得到NullPointerException

  2. # 2 楼答案

    试试这个:

    ArrayList<mNearbyPlaceMini> mn = new ArrayList<mNearbyPlaceMini>();
    for (int i = 0; i < googlePlacesObj.results.size(); i++) {
                            mGooglePlaces.place place = googlePlacesObj.results.get(i);
                            Bitmap placeImageBitmap = null;
                            try {
                                URL imageUrl = new URL(place.icon);
                                placeImageBitmap = BitmapFactory.decodeStream(imageUrl.openConnection().getInputStream());
                            } catch (MalformedURLException e) {
                                e.printStackTrace();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                            mNearbyPlaceMini mplaceMini = new mNearbyPlaceMini();
                            mplaceMini.placePicture = placeImageBitmap; //ERROR HERE
                            mplaceMini.placeName = place.name;
                            mn.add(mNearbyPlaceMini);
                        }