class ConstructorExists {
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);
A.class.getConstructor(Integer.TYPE);
A.class.getConstructor(Boolean.TYPE);
A.class.getConstructor(Double.TYPE);
C.class.getConstructor();
C.class.getConstructor(new Class[0]);
C.class.getConstructor(null);
A.class.getConstructor();
A.class.getConstructor(new Class[0]);
A.class.getConstructor(null);
C.class.getDeclaredConstructor();
C.class.getDeclaredConstructor(new Class[0]);
C.class.getDeclaredConstructor(null);
A.class.getDeclaredConstructor();
A.class.getDeclaredConstructor(new Class[0]);
A.class.getDeclaredConstructor(null);
}
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); }
public C() { super(0); }
}
}