【问题标题】:how to count number of objects created of inner class如何计算内部类创建的对象数
【发布时间】:2016-06-08 09:31:43
【问题描述】:

我有一个活动,其中有一个名为 AsyncTask 的类。在 AsyncTask 类中,我想将计数器声明为静态变量,但我不能,因为 AsyncTask 类被假定为 mainActivity 的内部类。

有什么方法可以在 AsycTask “内部类”中创建一个静态变量来统计 AsyncTask 创建的对象的数量,例如?

代码

class MainActivity extends Activity {
    ....
    ....
    ....
    ....

    class MyAsync extends AsyncTask <void, Void, Void> {

        private static int counter = 0; // is not possible here
    }

}

【问题讨论】:

    标签: java android android-asynctask static inner-classes


    【解决方案1】:

    你可以这样做:

    class MainActivity extends Activity {
        private static int counter = 0;
    
        // ...
    
        static class MyAsync extends AsyncTask <Void, Void, Void> {
    
            private MyAsync() {
                counter++;
            }
    
            // ...
        }
    }
    

    这样counter 将在您每次创建MyAsync 的新实例时递增。

    【讨论】:

      【解决方案2】:

      您也可以使用静态内部类。

      代码

      class MainActivity extends Activity {
          ....
          ....
          ....
          ....
      
          static class MyAsync extends AsyncTask <void, Void, Void> {
      
              private static int counter = 0; // is not possible here
          }
      
      }
      

      【讨论】:

        【解决方案3】:

        您可以创建一个构造函数来增加AsyncTask 内的counter

        这样做:

        class MainActivity extends Activity {
        ....
        ....
        ....
        ....
            int counter = 0; 
            class MyAsync extends AsyncTask <void, Void, Void> {
        
               MyAsync()
               {
                   counter++;
               }
            }
        
        }
        

        这背后的逻辑是:任何类的构造函数都会被调用 每次创建新对象时。内部构造函数 我们有counter++,所以每次创建新对象时 计数器增加,您将获得数量的计数 已创建对象。

        【讨论】:

        • 好的,但是在这种情况下,计数器变量不应该被声明为静态的,它也可以是非静态的,不是吗?
        • @jankigadhiya:你是古吉拉提人吗? :o
        猜你喜欢
        • 2020-03-02
        • 1970-01-01
        • 2014-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多