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(); } }}