java - 单例或具有静态字段的类

标签 java

我有一个类似这样的类(class)

class FileProcessorContext {
    private static BufferedWriter fileWriter;
    static {
        createFile();
    }
    public static void writeToFile(...) {}
    public static synchronized void closeFile(...) {}
}

我可以将FileProcessorContext创建为单例并使用它,而不是这个伪(它保留一些状态)实用程序类吗?

最佳答案

您可以使用具有单个枚举值的枚举,因为每个枚举值都是开箱即用的单例。
枚举可以实现一个可测试的接口(interface),以便能够在需要时切换到另一个实现:

public enum FileBufferedProcessorService implements FileProcessorService {

    SINGLETON;
    private BufferedWriter fileWriter;

    FileBufferedProcessorService(){  
       createFile();
   }
     ....

    public synchronized void writeToFile(...) {}
    public synchronized void closeFile(...) {}
}

和界面:

public interface FileProcessorService {

    void writeToFile(...);

    void closeFile(...);

}

关于java - 单例或具有静态字段的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44564309/

相关文章:

java - 如何在java中检查目录的写权限?

java - CentOS上安装ActiveMQ打不开admin等网页

java - 将对象从另一个类添加到 ArrayList

java - Flex utf-8编码如何解决

java - 初学者 ADT 和 JUnit 4

java - 无需 protected 资源的 JSF/Java EE 登录

java - 设置 Java - 基本(但不是那么基本......)问题

java - 具有多个客户端的 Android 套接字服务器..希望接近,但没有雪茄

java - “找不到或加载主类”是什么意思?

java - 不要登录到 catalina.out