¿Es posible especificar el tipo predeterminado al parametrizar una clase? Ejemplo:Parametrización opcional en Java con genéricos
// abstract class
public abstract class AbsClass<T1 extends Par1Class, T2 extends Par2Class> {
// code
}
// parametrized imlementation class
public class RealClass extends AbsClass<ClassThatExtendsPar1, ClassThatExtendsPar2Class> {
// code
}
// non-parametrized imlementation class
public class RealClass extends AbsClass {
// code
}
en mi aplicación que tiene que especificar ninguno o todos los parámetros. Es posible hacer que el segundo parámetro no obligatorio, algo como esto:
// abstract class
public abstract class AbsClass<T1 extends Par1Class, T2 extends Par2Class : default Par2Class > {
// code
}
// parametrized only mandatory imlementation class
public class RealClass extends AbsClass<ClassThatExtendsPar1> {
// code
}
Desde mi punto de vista hay una buena razón de hacer esto. Debido a que mi "parámetro opcional" (T2 extiende Par2Class) es una Clase que usamos como un Objeto de Valor y se extiende en lotes de otras clases. Si no especifico el T2, solo uso los métodos predeterminados de ValueObject. Si especifico, necesito métodos específicos y no tengo que emitir. Estaba pensando en introducir otra clase en el orden de herencia, pero tenía curiosidad acerca de la parametrización opcional. Gracias. – davorp
Puedo estar equivocado, pero creo que hay tales casos de uso. En C++, donde se permiten los tipos de plantilla predeterminados, se usan, p. para proporcionar una versión predeterminada del asignador de memoria para tipos STL. – Rom1
Un buen uso típico para esto sería el parámetro de tipo intermedio de SwingWorker, si es el mismo que el parámetro resultante. –