Dúvida sobre Generics

Galera não sou programador pleno nem nada, mas como tenho utilizado JAVA nas minhas aulas para o ensino prático de equações. Logo, resolvi aprimorar um pouco o conhecimento (para não ficar no marasmo :oops: ). [color=red]Minha dúvida é a seguinte…[/color]

[size=18]Amostra 1:[/size]

[code]public class NewClass {

static void passaGeneric(List<? extends CharSequence> lista) {
// nada
}

public static void main(String[] args) {
    List<? extends String> lista = new ArrayList<String>();
    passaGeneric(lista); // recebendo o <? extends String>
}

}[/code]
[size=18]Amostra 2:[/size]

[code]public class NewClass {

static void passaGeneric(List<? super String> lista) {
    // nada
}

public static void main(String[] args) {
    List<? super String> lista = new ArrayList<String>();
    passaGeneric(lista); // recebendo o <? super String>
}

}[/code]
[size=14]Nas Wildcards, jamais terei as combinações?[/size] [color=blue]Obs. Linha 3 e 9 dos exemplos![/color]
<? extends Tipo> EM [color=red]passaGeneric(…) [/color]RECEBENDO <? [color=red]super[/color] Tipo>
<? [color=red]super[/color] Tipo> EM [color=red]passaGeneric(…)[/color] RECEBENDO <? extends Tipo>

Seria uma combinação vaga? Correto?

Muito Obrigado! :wink:

Olá!

<? extends Classe/Interface> recebe parâmetros do tipo IS-A Classe/Interface -> não é possível realizar alteração na lista <? super Classe> recebe supertipos de Classe, é possível adicionar elementos... Você quer receber uma como argumento da outra? [code] public class Mae {} public class Filha extends Mae{ } import java.util.ArrayList; import java.util.List; public class Generico { public static void addTeste1(List<? extends Filha> lista) { for(Mae a: lista) { System.out.println(a); } } public static void addTeste2( List<? super Filha> lista ) { lista.add(new Filha()); } public static void main(String[] args) {s List<? extends Filha> filhaExtends = new ArrayList(); List<? super Filha> filhaSuper = new ArrayList(); addTeste1(filhaExtends); addTeste1(filhaSuper); /* Compilation Fails... */ addTeste2(filhaSuper); addTeste2(filhaExtends); /* Compilation Fails...*/ } } [/code] Tire sua conclusões...

Muito Obrigado mfjeng

Ajudou em 1000% :wink: