private static boolean isClassProxyable(Class<?> clazz) { if (clazz.isInterface()) { return true; } else { Constructor<?> constructor = Reflections.getDeclaredConstructor(clazz); if (constructor == null) { return false; } else if (Modifier.isPrivate(constructor.getModifiers())) { return false; } else if (Reflections.isTypeOrAnyMethodFinal(clazz)) { return false; } else if (Reflections.isPrimitive(clazz)) { return false; } else if (Reflections.isArrayType(clazz)) { return false; } else { return true; } } }