gpt4 book ai didi

java - 为什么java类的构造函数在android上不起作用?

转载 作者:行者123 更新时间:2023-12-02 11:48:56 25 4
gpt4 key购买 nike

在java中,当我们使用for循环并从类的构造函数创建新对象时,类的方法会运行5次,例如: for (int x=0; x<5; x++) {c1 = new CountTest();}

在 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 中看不到。textview显示数量:1

这意味着Contractor没有正确运行5次。怎么了..?

最佳答案

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

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

如果将其设为静态变量,您将获得预期的输出。 CountTest 类的所有实例都将更新同一变量。

改变

private int instanceCount = 0;

private static int instanceCount = 0;

关于java - 为什么java类的构造函数在android上不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48012940/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com