No puede hacer esto en tiempo de compilación en Java. Creo que lo mejor que puede hacer es tratar de verificar esto en tiempo de ejecución, mediante el uso de la reflexión para hacer algo como:
public static <T> boolean hasDefaultConstructor(Class<T> cls) {
Constructor[] constructors = cls.getConstructors();
for (Constructor constructor : constructors) {
if (constructor.getParameterTypes().length == 0) {
return true;
}
}
return false;
}
A continuación, puede invocar esta función de la siguiente manera:
hasDefaultConstructor(String.class) => true;
hasDefaultConstructor(Integer.class) => false;
Si esta función devuelve falso, entonces sabrá que la clase no tendrá un constructor predeterminado, y puede lanzar una excepción o lo que sea apropiado para su aplicación.
Pregunta graciosa en términos de interfaz java ... Interfaz con el constructor ... :) –