Pular para o conteúdo principal

conflicting_generic_interfaces

Detalhes sobre o diagnóstico 'conflicting_generic_interfaces' produzido pelo analisador do Dart.

The {0} '{1}' can't implement both '{2}' and '{3}' because the type arguments are different.

Descrição

#

O analisador emite este diagnóstico quando uma classe tenta implementar uma interface genérica várias vezes, e os valores dos argumentos de tipo não são os mesmos.

Exemplo

#

O código a seguir produz este diagnóstico porque C é definida para implementar tanto I<int> (porque estende A) quanto I<String> (porque implementa B), mas int e String não são o mesmo tipo:

dart
class I<T> {}
​
class A implements I<int> {}
​
class B implements I<String> {}
​
class C extends A implements B {}

Correções comuns

#

Refaça a hierarquia de tipos para evitar essa situação. Por exemplo, você pode tornar um ou ambos os tipos herdados genéricos, de modo que C possa especificar o mesmo tipo para ambos os argumentos de tipo:

dart
class I<T> {}
​
class A<S> implements I<S> {}
​
class B implements I<String> {}
​
class C extends A<String> implements B {}

Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.