devxlogo

Causes for an InstantiationException

Causes for an InstantiationException

Question:
What can cause an InstantiationException?

Answer:
An InstantiationException is thrown when you try to create an instance of a class with Class.newInstance() and the class cannot beinstantiated. This could be because there is an uninstantiable interface or abstract class. If the constructor is not public, thenan IllegalAccessException will be thrown.

The following example demonstrates this:

 class Foo {  private Foo() { }}public class Instantiate {  public static final void main(String[] args) {    Class c;    Object obj;    try {      c = Class.forName("java.lang.Cloneable");    } catch(ClassNotFoundException e) {      e.printStackTrace();      return;    }    // Should throw InstantiationException    try {      obj = c.newInstance();    } catch(InstantiationException e) {      System.err.println("
An InstantiationException was thrown.
");      e.printStackTrace();    } catch(IllegalAccessException e) {      System.err.println("
An IllegalAccessException was thrown.
");      e.printStackTrace();    } catch(SecurityException e) {      System.err.println("
A SecurityException was thrown.
");      e.printStackTrace();    }    try {      c = Class.forName("Foo");    } catch(ClassNotFoundException e) {      e.printStackTrace();      return;    }    // Should throw IllegalAccessException    try {      obj = c.newInstance();    } catch(InstantiationException e) {      System.err.println("
An InstantiationException was thrown.
");      e.printStackTrace();    } catch(IllegalAccessException e) {      System.err.println("
An IllegalAccessException was thrown.
");      e.printStackTrace();    } catch(SecurityException e) {      System.err.println("
A SecurityException was thrown.
");      e.printStackTrace();    }  }}

devx-admin

Share the Post: