You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中除私有构造方法外,还有哪些禁止生成类对象的方式?

除了将构造方法设为私有,还有以下几种方式可以阻止外部创建类的实例:

  • 使用枚举类
    枚举类的构造方法默认是私有的,JVM会保证枚举实例只能是代码中定义的固定对象,外部无法通过new关键字创建新的实例。示例代码:
public enum Person {
    INSTANCE;
    
    public void sayHello() {
        System.out.println("Hello from Person");
    }
}

外部只能通过Person.INSTANCE访问预定义的实例,无法自行创建新的Person对象。

  • 在私有构造方法中抛出异常
    即使通过反射机制强行调用私有构造方法,也会因为构造方法内抛出的异常而无法完成实例化。示例代码:
public class Person {
    private Person() {
        throw new UnsupportedOperationException("禁止创建该类的实例");
    }
}

这种方式可以彻底拦截包括反射在内的所有实例化尝试。

  • 抽象类搭配私有构造方法
    抽象类本身无法直接实例化,再结合私有构造方法可以阻止子类继承(子类构造方法必须调用父类构造方法,而私有构造无法被子类访问),从而彻底杜绝该类及其子类的实例化。示例代码:
public abstract class Person {
    private Person() {}
    
    public abstract void performAction();
}

外部既不能直接实例化Person,也无法通过继承创建子类并实例化。

内容的提问来源于stack exchange,提问作者harbk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 00:54:09