Ao ler o tutorial oficial Java sobre genéricos, descobri que você pode restringir o argumento de tipo (neste caso é T
) para estender uma classe e / ou mais interfaces com o operador 'e' ( &
) como este:
<T extends MyClass & Serializable>
Substituí o &
por ,
(por engano e ainda funciona, com um pequeno aviso).
Minha pergunta é, há alguma diferença entre esses dois:
<T extends MyClass & Serializable>
<T extends MyClass , Serializable> // here is with comma
E o método de exemplo:
static <T extends MyClass & Serializable> ArrayList<T> fromArrayToCollection(T[] a) {
ArrayList<T> arr = new ArrayList<T>();
for (T o : a) {
arr.add(o); // Correct
}
return arr;
}
5
@Doorknob você está assumindo que o OP está usando um teclado e o mesmo teclado que você está usando.
—
emory
@emory Acho que até essa direção está errada - o erro não estava em seus dedos, mas em seu cérebro. Da mesma forma como se você tivesse tentado usar 'incluir' em vez de 'importar' em um arquivo de origem Java. Você digitou 'include' incorretamente porque seu cérebro lhe disse para digitar a coisa errada, o que é possível por vários motivos.
—
Nick Pickering
@Nicholas Pickering, está certo! Para mim, não foi um erro de digitação por causa do teclado, mas por causa do cérebro. Quando você escreve quais interfaces uma classe implementa, você as separa por vírgulas.
—
Alin Ciocan