简介
有时我们需要创建一些工具类,这些类只包含静态方法和静态字段,不应该被实例化。
那么把类写成抽象的不就可以无法实例化了?抽象类虽然不能被实例化,但可以被继承。而工具类通常不需要子类化,私有构造器+异常的方式更加明确和严格。
在 Java 中,子类的构造器必须调用父类的构造器(显式或隐式调用 super(...))。如果父类的构造器是私有的(private),子类将无法访问父类的构造器,从而导致子类无法被实例化。可进一步将类声明为 final,防止子类化。
实现
举个例子 🌰
public final class StringUtils {
// 私有构造器,禁止外部实例化
private StringUtils() {
// 防止通过反射创建实例
throw new AssertionError("不可实例化!");
}
// 静态工具方法示例
public static boolean isEmpty(String str) {
return str == null || str.trim().isEmpty();
}
public static String reverse(String str) {
if (str == null) return null;
return new StringBuilder(str).reverse().toString();
}
}
总结
通过这种方式,清楚地表明这个类不应该被实例化,避免其他开发者错误地创建实例。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。