Généricos de Java con compatibilidad de clases e interfaces
En Java, crear un objeto de clase con restricciones específicas puede ser un desafío. Un escenario común es definir un objeto de clase que extiende una clase particular mientras implementa simultáneamente una interfaz específica. Sin embargo, lograr ambas restricciones simultáneamente usando genéricos ha sido un punto común de discordia.
Intentos de forzar a una clase a extender ClassA e implementar la interfaz InterfaceB usando la sintaxis:
Class extends ClassA>
o
Class extends InterfaceB>
solo satisfará un requisito y no podrá combinar ambos.
Solución
Afortunadamente, los genéricos de Java permiten múltiples interfaces o clases plus interfaces. Para lograr esto, modifique la declaración comodín de la siguiente manera:
Como se ilustra en el Tutorial genérico de Sun, agregando & InterfaceName para cada interfaz adicional requerida, un Se puede lograr una combinación arbitrariamente compleja. Por ejemplo, la declaración JavaDoc de Collections#max demuestra esta complejidad:
public static> T max(Collection extends T> coll)
Preservar la compatibilidad binaria requiere estas declaraciones intrincadas.
Implementación con restricciones de clase e interfaz
Para implementar la restricción deseada en una declaración de variable, coloque un límite genérico en una clase:
class classB { } interface interfaceC { } public class MyClass{ Class variable; }
Conclusión
Los genéricos de Java proporcionan formas flexibles de crear combinaciones restringidas de clases e interfaces. Al comprender la sintaxis y las limitaciones, los desarrolladores pueden aprovechar este poder para imponer requisitos específicos en su código.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3