我有一个类,其方法称为 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;
}
}
}
这是正确的做法吗,有什么建议吗?
最佳答案
静态字段(除非它们是最终字段)非常不受欢迎,因此您应谨慎使用它们。
您的类mClass
具有实例字段和方法,然后您决定将线程上的一些操作分解为实用程序类。
您的实用程序类应该是无状态的,并且不依赖于静态字段,如果您需要一个全局变量,轻量级解决方案是创建一个单例,并在那里托管您的全局变量。
使用单例也令人皱眉(但不如随机静态字段),下一步是依赖注入(inject)框架,如 guice、weld、spring(你能想到的)。
底线是:尝试保持数据范围,如果您需要全局字段,请将其视为应用程序范围中的范围字段。
关于java - 在java的静态上下文中是否有任何替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42759574/