当试图实例化一个类时,如果该类的访问限制符为”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;
}
}