Otro enfoque no reflexivo es utilizar un patrón híbrido de generador/fábrica abstracta.
En Effective Java, Joshua Bloch Balón por encima del Builder en detalle, y aboga por una interfaz Constructor genérica:
public interface Builder<T> {
public T build();
}
constructores de hormigón pueden implementar esta interfaz, y fuera de las clases pueden utilizar el constructor de hormigón para configurar el Constructor según sea necesario. El constructor se puede pasar a MyClass como Builder<T>
.
Usando este patrón, puede obtener nuevas instancias de T
, incluso si T
tiene parámetros de constructor o requiere configuración adicional. Por supuesto, necesitará alguna forma de pasar el Constructor a MyClass. Si no puede pasar nada a MyClass, entonces Builder y Abstract Factory están fuera.
Lo que el paquete 'Supplier' se encuentra en? 'MyClass (Clase extends T> impl)' debe declarar 'throws NoSuchMethodException' para compilarse. Desafortunadamente, su respuesta no es amigable para los principiantes de Java. – user927387
@ user927387 'java.util.function.Supplier' – erickson