应用静态方法的辅助类声明应该是什么?

时间:2014-03-27 07:59:23

标签: java static helper

我这里有一个类,只包含static个方法,所以我称之为帮助类,例如:

public class FileUtils {
    public static String readFileEntry(final Path path, final String entryKey) throws IOException { }

    public static String readAndModifyFileEntry(final Path path, final String entryKey, final UnaryOperator<String> operator) throws IOException { }
}

我应该如何声明该类(abstractfinalstatic等),以便无法实例化该类?因为你不应该这样做 如果那是不可能的,那么最佳做法是什么?

如果有任何额外的帮助,我正在使用Java 8.

4 个答案:

答案 0 :(得分:3)

您可以将构造函数声明为private,并使用final关键字来阻止扩展:

public final class FileUtils {
    private FileUtils() {
    }

    public static String readFileEntry(final Path path, final String entryKey) throws IOException { }

    public static String readAndModifyFileEntry(final Path path, final String entryKey, final UnaryOperator<String> operator) throws IOException { }
}

答案 1 :(得分:3)

这是一种常见的模式:

public final class Helper {

    private Helper() {}

}

答案 2 :(得分:3)

我将班级final作为预防措施,因此没有任何机构错误地延伸。 更重要的是,我添加了一个私有构造函数,因此无法实例化:

public final class FileUtils {

    /** Empty private constructor, just to prohibit instantiation */
    private FileUtils() {}

    // Rest of the class...
}

答案 3 :(得分:2)

static修饰符仅与内部类相关,并不会阻止其实例化。 final修饰符可防止扩展类,但不会影响创建实例的能力。 abstract修饰符确实会阻止创建类的实例。将纯实用程序类标记为abstract是一种很好的做法。防止类实现的其他方法是创建私有构造函数:

public class FileUtils {
    private FileUtils() {
        // empty constructor needed just to make it impossible to write new FileUtils()
    }
}