2 annbnncnnd AnnBnnCnnD 于 2013.02.03 14:42 提问

分配变量后莫名变成空值了

类:

public class Nomenklatura implements Serializable {
    ArrayList<String> data = new ArrayList<String>();
    ArrayList<String> data1 = new ArrayList<String>();
    ArrayList<String> data2 = new ArrayList<String>(6);
}

Activity:

public class Smena extends Activity {
    public Nomenklatura Asortiment;
    ArrayList<String> data = new ArrayList<String>();
    ArrayList<String> data1 = new ArrayList<String>();
    ArrayList<String> data2 = new ArrayList<String>(6);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.smena); 
        Intent i= getIntent();

        Asortiment = (Nomenklatura) i.getExtras().getSerializable("Nomenklatura");
        ArrayList<String> data = Asortiment.data;
        ArrayList<String> data1 = Asortiment.data1;
        ArrayList<String> data2= Asortiment.data2;
    }
}

在调试程序中,ArrayList<String> data =Asortiment.data;之前看到Asortiment.data的数据,但是在此操作之后,ArrayList data就为空了,不知道为什么?

1个回答

csxrzeng
csxrzeng   2015.06.05 10:12

数组这种东西是引用类型。就是说你持有的只是一个引用,里面的数据可以被其他人修改。
如果Asortiment在这之后把数据里面的东西清空了,则你这个data会为空。
如果要保存一个副本,则应该进行数组的拷贝操作。
ArrayList data = Asortiment.data.clone();

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!