"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso combinar restrições de classe e interface usando Java genéricos?

Como posso combinar restrições de classe e interface usando Java genéricos?

Publicado em 2024-12-22
Navegar:467

How Can I Combine Class and Interface Constraints Using Java Generics?

Java genéricos com compatibilidade de classe e interface

Em Java, criar um objeto de classe com restrições específicas pode ser desafiador. Um cenário comum é definir um objeto de classe que estenda uma classe específica e, ao mesmo tempo, implemente uma interface específica. No entanto, alcançar ambas as restrições simultaneamente usando genéricos tem sido um ponto comum de discórdia.

Tentativas de forçar uma classe a estender ClassA e implementar a interface InterfaceB usando a sintaxe:

Class extends ClassA>

ou

Class extends InterfaceB>

satisfará apenas um requisito e não combinará ambos.

Solução

Felizmente, os genéricos Java permitem múltiplas interfaces ou classe plus interfaces. Para conseguir isso, modifique a declaração curinga da seguinte maneira:

Conforme ilustrado no Tutorial de Genéricos da Sun, anexando & InterfaceName para cada interface necessária adicional, um combinação arbitrariamente complexa pode ser alcançada. Por exemplo, a declaração JavaDoc de Collections#max demonstra esta complexidade:

public static > T max(Collection extends T> coll)

Preservar a compatibilidade binária requer essas declarações intrincadas.

Implementação com restrições de classe e interface

Para implementar a restrição desejada em uma declaração de variável, coloque um limite genérico em uma classe:

class classB { }
interface interfaceC { }

public class MyClass {
    Class variable;
}

Conclusão

Os genéricos Java fornecem maneiras flexíveis de criar combinações restritas de classes e interfaces. Ao compreender a sintaxe e as limitações, os desenvolvedores podem aproveitar esse poder para impor requisitos específicos em seu código.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3