fal*_*ure 13 java constructor helper
我想创建一个处理格式的辅助类(即具有删除标点符号和类型之间转换的方法,以及重新格式化名称等).这似乎不需要任何字段 - 它唯一的目的是传递转换的东西并返回它们,重新格式化.省略构造函数是不好的做法?如果是这样,我的构造函数应该做什么?我正在查看此链接并注意到它描述的类缺少构造函数.
Jon*_*eet 40
省略构造函数是不好的做法?
是 - 因为除非您指定任何构造函数,否则Java编译器将为您提供一个与类本身具有相同可见性的构造函数.
假设你的所有方法都是静态的 - 除非你想要多态,这似乎很可能 - 你应该创建你的类final并给它一个private构造函数,这样其他开发人员就不会意外地创建你的类的实例,而这将是毫无意义的.在考虑API时,任何时候我都可以删除开发人员做一些蠢事的能力,我这样做:)
所以类似于:
public final class Helpers {
private Helpers() {
}
public static String formatDate(Date date) {
// etc
}
}
Run Code Online (Sandbox Code Playgroud)
注意,通过将多态性排除在等式之外,你也可以消除改变测试等行为的可能性.这可能很好 - 我不相信"没有静力学",但是值得考虑.
任何具有所有不具有或不需要任何状态的方法的类都可以通过使构造函数私有来减少构造函数的可见性.
Java中的示例java.lang.Math类.
由于java.lang.Math具有所有静态方法里面做的班级,他们已经宣布的构造类似的工作private,这样没有人可以意外创建类的实例.
/**
* Don't let anyone instantiate this class.
*/
private Math() {}
Run Code Online (Sandbox Code Playgroud)