public static MethodHandle getConstructor ( Class < ? > clazz , Class < ? > ... args ) { try { // We use unreflect so that we can make the constructor accessible Constructor < ? > ctor = clazz . getDeclaredConstructor ( args ) ; ctor . setAccessible ( true ) ; return MethodHandles . lookup ( ) . unreflectConstructor ( ctor ) ; } catch ( NoSuchMethodException e ) { throw new IllegalStateException ( clazz . getName ( ) + " has no constructor with args " + Arrays . toString ( args ) , e ) ; } catch ( IllegalAccessException e ) { throw new IllegalStateException ( "Problem getting constructor for " + clazz . getName ( ) + " with args " + Arrays . toString ( args ) , e ) ; } }
Gets a constructor that has the specified types of arguments . Throw an IllegalStateException if the class does not have such a constructor .