Java 抽象与无实例方法?
我有一个类(class util)用于生成密码(它只有一个公共静态方法)。这里有两种方法:将其抽象化,这样就没有人可以创建其实例Java 抽象与无实例方法?,java,oop,static,abstract-class,static-methods,Java,Oop,Static,Abstract Class,Static Methods,我有一个类(class util)用于生成密码(它只有一个公共静态方法)。这里有两种方法:将其抽象化,这样就没有人可以创建其实例 public abstract class PasswordGenerator { public static String randomstring(int lo, int hi) { // Some logic , doesn't matter return ""; } } 或者使其构造函数私有。那么最好的方法是什么呢 pub
public abstract class PasswordGenerator {
public static String randomstring(int lo, int hi) {
// Some logic , doesn't matter
return "";
}
}
或者使其构造函数私有
。那么最好的方法是什么呢
public class PasswordGenerator {
private PasswordGenerator() {
}
public static String randomstring(int lo, int hi) {
// Some logic , doesn't matter
return "";
}
}
那么,最好的方法是什么呢?您绝对不应该将类抽象化,因为这可能会向其他开发人员表明,它是要扩展的(并因此实例化)
public class PasswordGenerator {
private PasswordGenerator() {
}
public static String randomstring(int lo, int hi) {
// Some logic , doesn't matter
return "";
}
}
让一个类在技术上能够被实例化是一个小问题
但在这里,您可以看到一种变通方法,它使用私有构造函数并将类设置为final。您绝对不应该将类抽象化,因为这可能会向其他开发人员表明,它是要扩展的(因此被实例化) 让一个类在技术上能够被实例化是一个小问题
但在这里,您可以看到一种变通方法,它使用私有构造函数并将类设置为final。将类设置为final和构造函数设置为private 使用
final
关键字,您可以清楚地表达这样一种意图,即类不是继承的。
使用private
构造函数,您可以清楚地表达这样一种意图,即类不会被实例化
public final class PasswordGenerator {
private PasswordGenerator() {}
public static String randomstring(int lo, int hi) {
// Some logic , doesn't matter
return "";
}
}
将类
设为final
并将构造函数设为private
使用final
关键字,您可以清楚地表达这样一种意图,即类不是继承的。
使用private
构造函数,您可以清楚地表达这样一种意图,即类不会被实例化
public final class PasswordGenerator {
private PasswordGenerator() {}
public static String randomstring(int lo, int hi) {
// Some logic , doesn't matter
return "";
}
}
你想通过这个实现什么?!java没有静态类吗?你想要做的可能的重复就是创建一个单例。在Java中寻找singleton模式,或者通过@mad找到答案_manny@KoosGadellaa我不同意,据我们所知,OP不需要一个单例,因为他没有提到有状态操作。你想通过这个实现什么?!java没有静态类吗?你想要做的可能的重复就是创建一个单例。在Java中寻找singleton模式,或者通过@mad找到答案_manny@KoosGadellaa我不同意,据我们所知,OP不需要单例,因为他没有提到有状态操作。