Here you can find the source of newInstance(Class
@SuppressWarnings("unchecked") public static <T> T newInstance(Class<T> type, Class<?> declarator, Annotation annotation) throws IllegalAccessException
//package com.java2s; /******************************************************************************* * Copyright (c) 2012 itemis AG (http://www.itemis.eu) and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class Main { @SuppressWarnings("unchecked") public static <T> T newInstance(Class<T> type, Class<?> declarator, Annotation annotation) throws IllegalAccessException { if (declarator != null) try { Constructor<?> c = type.getDeclaredConstructor(declarator.getClass(), annotation.annotationType()); c.setAccessible(true);/*from w ww .j a va2 s .c om*/ if (c != null) return (T) c.newInstance(declarator, annotation); } catch (SecurityException e) { } catch (NoSuchMethodException e) { } catch (InstantiationException e) { } catch (InvocationTargetException e) { throw new RuntimeException(e); } try { Constructor<?> c = type.getConstructor(annotation.annotationType()); if (c != null) return (T) c.newInstance(annotation); } catch (SecurityException e) { } catch (NoSuchMethodException e) { } catch (InstantiationException e) { } catch (InvocationTargetException e) { throw new RuntimeException(e); } try { Constructor<?> c = type.getConstructor(); if (c != null) return (T) c.newInstance(); } catch (SecurityException e) { } catch (NoSuchMethodException e) { } catch (InstantiationException e) { } catch (InvocationTargetException e) { throw new RuntimeException(e); } return null; } }