即使在设置之后对象的属性也为null

时间:2014-05-20 21:07:55

标签: java

我一直在看这个。首先,这里有一些代码:

MyActivity.java

MeasurementType type = handler.getMeasurementType(DEFAULT_TYPE);
ArrayList<Unit> unitsConverted = new ArrayList<Unit>();
unitsConverted.addAll(Arrays.asList(type.getUnits()));

DataBaseHandler.java

public MeasurementType getMeasurementType(String measurementType) {
        SQLiteDatabase db = this.getReadableDatabase();
        int num = getMeasurementUnitCount(measurementType);
        MeasurementType mType = MeasurementType.getMeasurementType(measurementType);
        Unit[] units = new Unit[num];
        String getUnits = "SELECT unit_name, view FROM " + measurementType;
        Cursor cursor = db.rawQuery(getUnits, null);
        for(int i = 0; i <= units.length-1; i++) {
            if(cursor.moveToNext()) {
                Unit u = new Unit();
                u.setUnitName(cursor.getString(0));
                u.setView(cursor.getInt(1));
                units[i] = u;
            }
        }

        mType.setUnits(units);
        return mType;
    }

我不太清楚为什么会发生这种情况但是在这一行之后: mType.setUnits(units) 调试器告诉我该属性为null ... num是21是正确的,数组units从0到20,这是正确的。 以下是我在setUnits(units)课程中MeasurementType方法的实现:

protected void setUnits(Unit[] passedUnits) {
       units = new Unit[passedUnits.length+1];
       System.arraycopy(passedUnits, 0, units, 0, passedUnits.length);
    }

它也能正常工作...... 事实上,当方法getMeasurement完成并且我回到我的活动中时,它仍然表示null。

然而,逐步创建ArrayList,然后执行: unitsConverted.addAll(Arrays.asList(type.getUnits()));

工作正常...... ArrayList填充正常。但有一点我不明白为什么调试器告诉我该属性是空的......它已经发生在这个特定情况已经有一段时间了,我还没有能够修复它

您可能需要了解的更多信息是MeasurementType是一个抽象类,它基于传递给它的字符串来实例化子类,因此它肯定会创建一个子类并初始化所有内容:)

0 个答案:

没有答案