Java报错”InstantiationError”的原因以及解决办法

  • Post category:Java

当试图实例化一个类时,如果该类的访问限制符为”private”,但在该类的外部还是可以访问到的时候,就会抛出Java InstantiationError异常。具体原因是因为该类的构造器被私有化,所以外部无法直接实例化该类,但在其它类中的静态代码块、静态方法或虚拟机预设值中调用该类的实例化操作时,都会出现InstantiationError异常。

解决办法一:

将构造器的访问限制符更改为public,即可解决InstantiationError异常。

示例代码如下:

public class MyClass {
    public MyClass() {
        // 构造器逻辑
    }
}

解决办法二:

若希望使用私有化的构造器,可以通过使用单例模式来完成实例化操作。

示例代码如下:

public class MyClass {
    private static final MyClass INSTANCE = new MyClass();
    private MyClass() {
        // 私有化构造器
    }
    public static MyClass getInstance() {
        return INSTANCE;
    }
}