在Java中,当我们使用for循环并从类的类承包商创建新对象时,例如运行5次:
 for(int x = 0; x
在Android中无法正常工作!!!
这是代码:

package com.hamid.counttestapp;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView textView=(TextView)findViewById(R.id.textview);
        textView.setText(Integer.toString(Counter()));
    }


    public int Counter()
    {
        CountTest c1 = new CountTest();
        for (int x=0; x<5; x++) {
            c1 = new CountTest();
        }
        return c1.getInstanceCount();
    }

    class CountTest
    {
        private int instanceCount = 0;

        public CountTest()
        {
            instanceCount++;
        }

        public int getInstanceCount()
        {
            return instanceCount;
        }
    }
}


承包商应运行4次,instanceCount的值应为4。
但是在文本视图中看不到数字4。
textview显示编号:1

这意味着承包商无法正确运行5次。
怎么了..?

最佳答案

构造函数执行5次,并创建5个CountTest实例。

但是,由于instanceCount是实例变量,所以CountTest类的5个实例中的每个实例都有该变量的不同副本。它们都被初始化为0,然后递增为1。

如果将其设置为static变量,则将获得预期的输出。 CountTest类的所有实例将更新同一变量。

更改

private int instanceCount = 0;




private static int instanceCount = 0;

09-28 02:10
查看更多