在java

时间:2017-03-13 08:51:42

标签: java static this

我有一个名为sThread()的方法。 想要重构mClass的sThread()方法的代码。

class SClass {
     private Thread sThread;

     public void sSubThread() {

          initalize_sThread();

          //some code

          if (this.sThread != null) {
              return;
          }
     }
 }

所以我做了如下所示的更改 使用静态方法创建了一个名为SubscritpionThread的实用程序类。

class mClass {
    // some code

    public void sThread() {
        SThread.sThreadStart();       
    }
}

class SThread {

    private static Thread sThread;

    private static void initalize_sThread() {
        //  some code
    }

    public static void sThreadStart() {
        // some code
        // changed this to classname
        if (SThread.sThread != null) {
             return;
        }
    }
}

这是正确的做法吗,请提出任何建议吗?

1 个答案:

答案 0 :(得分:3)

静态字段(除非它们是最终的)非常皱眉,所以你要谨慎使用它们。

您的类mClass具有实例字段和方法,然后您决定将线程上的某些操作分解为实用程序类。

您的实用程序类应该是无状态的,而不是依赖于静态字段,如果您需要全局变量,轻量级解决方案是创建单例,并在那里托管您的全局变量。

使用singleton也是皱眉(但不是随机静态字段),下一步是依赖注入框架,如guice,weld,spring(你的名字)。

底线是:尝试保持数据作用域,如果需要全局字段,请将其视为应用程序范围中的作用域字段。