我有一个用于生成密码的类(类util)(它只有一个公共静态方法)。这里有两种方式:使它变得抽象,所以没有人可以创建它的实例
public abstract class PasswordGenerator {
public static String randomstring(int lo, int hi) {
// Some logic , doesn't matter
return "";
}
}
或制作其构造函数private
。那么这样做的最佳方法是什么?
public class PasswordGenerator {
private PasswordGenerator() {
}
public static String randomstring(int lo, int hi) {
// Some logic , doesn't matter
return "";
}
}
那么最好的方法是什么?
答案 0 :(得分:3)
你绝对不应该把这个类抽象化,因为这可能向其他开发人员表明它是为了扩展(并因此实例化)。
让技术上能够实例化的课程是一个小问题。
但是在这个SO thread中你可以看到一个变通方法,它使用私有构造函数和最终的类。
答案 1 :(得分:1)
同时创建课程final
和构造函数private
。
使用final
关键字,您可以清楚地表达该类未被继承的意图。
使用private
构造函数,您可以清楚地表达该类未被 instanciated 的意图。
public final class PasswordGenerator {
private PasswordGenerator() {}
public static String randomstring(int lo, int hi) {
// Some logic , doesn't matter
return "";
}
}