class Constructors { void foo(Object o, Class c) throws Exception { Class ca = A.class; ca.getConstructor(int.class); ca.getConstructor(float.class); ca.getConstructor(boolean.class); ca.getConstructor(String.class); ca.getConstructor(Exception.class); ca.getConstructor(int.class, boolean.class, String.class); ca.getConstructor(int.class, c, String.class); ca.getConstructor(int.class, o.getClass(), String.class); ca.getDeclaredConstructor(int.class); ca.getDeclaredConstructor(float.class); ca.getDeclaredConstructor(boolean.class); ca.getDeclaredConstructor(String.class); ca.getDeclaredConstructor(Exception.class); ca.getDeclaredConstructor(int.class, boolean.class, String.class); ca.getDeclaredConstructor(int.class, c, String.class); ca.getDeclaredConstructor(int.class, o.getClass(), String.class); C.class.getConstructor(int.class); C.class.getConstructor(boolean.class); } static class A { public A(int n) {} protected A(float f) {} A(boolean b) {} private A (String s) {} public A(int n, boolean b, String s) {} public A(int n, boolean b, float f) {} } static final class C extends A { public C(int n) { super(n); } } }