我这里有一个类,只包含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 { }
}
我应该如何声明该类(abstract
,final
,static
等),以便无法实例化该类?因为你不应该这样做
如果那是不可能的,那么最佳做法是什么?
如果有任何额外的帮助,我正在使用Java 8.
答案 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()
}
}