我想创建一个帮助类来处理格式化的内容(比如删除标点符号、转换类型以及重新格式化名称等)。这个类似乎不需要任何字段 - 它的唯一目的是将需要转换的东西传递给它,然后返回格式化后的结果。如果没有构造函数是否会不好?如果不好,我的构造函数应该做什么?我看了这个链接,发现它描述的类缺少构造函数。
我想创建一个帮助类来处理格式化的内容(比如删除标点符号、转换类型以及重新格式化名称等)。这个类似乎不需要任何字段 - 它的唯一目的是将需要转换的东西传递给它,然后返回格式化后的结果。如果没有构造函数是否会不好?如果不好,我的构造函数应该做什么?我看了这个链接,发现它描述的类缺少构造函数。
final
并给它一个private
构造函数,以便其他开发人员不会意外地创建一个无用的类实例。在考虑API时,每当我可以去除开发人员做某些愚蠢事情的能力时,我都会这样做:) public final class Helpers {
private Helpers() {
}
public static String formatDate(Date date) {
// etc
}
}
请注意,如果将多态性排除在外,您也将消除在测试等方面更改此行为的可能性。这可能是可以接受的 - 我不相信“永远不使用静态变量” - 但值得考虑。
例如Java中的java.lang.Math类。
由于java.lang.Math
具有执行与您的类相似工作的所有静态方法,因此它们已将构造函数声明为private
,以便没有人会意外创建该类的实例。
/**
* Don't let anyone instantiate this class.
*/
private Math() {}
这并不是一个坏的做法,但你给出的例子没有任何成员变量可以在对象上下文中使用。在这种情况下,最好使用静态方法,因为这样就不需要分配内存来创建类的对象,然后再调用方法。
如果您的类中没有实例变量,那么不需要编写构造函数是可以的!
构造函数的作用是初始化实例变量!
即使您跳过了构造函数,编译器也会自动插入默认构造函数,这是合理的!!