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