温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java Private 私有构造器干嘛用

发布时间:2026-07-24 01:24:51 来源:亿速云 阅读:105 作者:小樊 栏目:编程语言

在 Java 里,**私有构造器(private constructor)**主要作用是:阻止外部代码通过 new 创建该类的实例
它通常用于以下几类设计场景:


1️⃣ 工具类(Utility Class)

工具类一般只包含 static 方法,不需要实例。

public class MathUtil {

    private MathUtil() {
        // 防止被实例化
    }

    public static int add(int a, int b) {
        return a + b;
    }
}

✅ 作用:

  • 避免被 new MathUtil()
  • 明确表达“这个类不应该被实例化”

2️⃣ 单例模式(Singleton)

确保一个类只有一个实例

public class Singleton {

    private static final Singleton INSTANCE = new Singleton();

    private Singleton() {}

    public static Singleton getInstance() {
        return INSTANCE;
    }
}

✅ 作用:

  • 防止外部通过 new 创建多个对象
  • 只能通过类提供的方法获取实例

3️⃣ 工厂方法(Factory Method)

实例创建逻辑不对外暴露,由工厂方法控制。

public class User {

    private String name;

    private User(String name) {
        this.name = name;
    }

    public static User create(String name) {
        return new User(name);
    }
}

✅ 好处:

  • 可以加校验、缓存、日志
  • 构造逻辑集中管理

4️⃣ 防止子类化(防止被继承)

构造器是 private,子类无法调用父类构造器,因此不能被继承

public class Parent {

    private Parent() {}
}

// ❌ 编译错误
// class Child extends Parent {}

✅ 常用于:

  • 不想被继承的工具类
  • 设计上就不允许扩展的类

5️⃣ 内部类或依赖注入框架

某些框架(如 Spring)或内部实现类中,构造器私有化用于:

  • 控制实例创建方式
  • 配合反射或框架管理对象生命周期

❗ 常见误区

❌ 私有构造器 ≠ 不能创建对象
同一个类内部仍然可以 new

public class Example {

    private Example() {
        Example e = new Example(); // ✅ 合法
    }
}

✅ 总结一句话

私有构造器 = 限制对象创建方式
用来实现:

  • 单例
  • 工具类
  • 工厂
  • 防止继承
  • 控制对象生命周期

如果你愿意,我也可以:

  • 对比 private / protected / default 构造器
  • 讲 Spring 中为什么很少写 private 构造器
  • 用现实例子帮你理解(比如“身份证号只能由系统生成”)
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI