Os genéricos de C# não têm tipos de curingas porque os genéricos do .NET são genéricos suportados pelo CLR, enquanto Java JVM não suporta genéricos, mas apenas a sintaxe açúcar, e eles são convertidos em tipos de objeto quando compilados pelo compilador
Tipo WildCards representa a classe pai de tipos genéricos em java
Teste public void (list <ject> c) {for (int i = 0; i <c.size (); i ++) {System.out.println (c.get (i)); }}// Crie uma lista <String> Lista de objetos <String> strlist = new ArrayList <String> (); // Calendate o teste do método de teste anterior (strlist);
Compilar o programa acima e um erro de compilação ocorrerá no teste (strlist), o que significa que a lista <String> não pode ser considerada como uma subclasse da lista <ject>. Neste momento, você precisa usar o tipo de curinga do tipo, que é A?
A lista acima <Beject> pode ser substituída pela lista <?> E depois pode ser compilada
Teste public void (list <?> c) {for (int i = 0; i <c.size (); i ++) {System.out.println (c.get (i)); }}Lista <String> pode ser usada como uma subclasse da lista <?>, List <?> Pode ser usada como uma classe pai de qualquer tipo de lista,
E se você quiser ser a classe pai da lista <String> em vez de list <int>? Escreva como esta lista <? estende a string>
Em C#, este é o tipo de restrição
classe myclass <t, u> where t: classe onde u: struct {} Interface iMyInterface {} classe Dictionary <TKEY, TVAL> Onde TKEY: ICOMPARABLE, IENUMERABER WHERE TVAL: IMYInterface {public void Add (TKEY KEY, TVAL VAL) {}}Limite superior para curingas genéricas restritas em Java:
// indica que o tipo t deve ser a classe numérica ou sua subclasse e deve implementar a interface java.io.Serializable Classe pública Apple <t estende o número & java.io.Serializable> {}O exposto acima é o conteúdo completo da comparação e análise dos curingas genéricas de Java e C# trazido a você pelo editor. Espero que todos apoiem wulin.com ~