Je me sens stupide en demandant cela mais je le suis.Java Affectation de référence avec des listes génériques
La ligne List<HasId> ids = list
donne une erreur de compilation dans le code suivant:
public class MyGarbageClass {
public void myMethod(List<MyCompany> list){
List<HasId> ids = list;
}
interface HasId {
int getId();
}
class MyCompany implements HasId{
private int id = 5;
@Override
public int getId() {
return id;
}
}
}
MyCompany implémente Hassid donc je pensais que je devrais pouvoir l'affecter. Pourquoi je ne peux pas? Et plus important encore, ce qui est un moyen facile d'attribuer cela à la liste d'objets HasId.
mise à jour: Liste ids = (List<HasId>)list;
pauses aussi sur les types inconvertibles
ce n'est pas non plus une distribution, c'est une référence. Une distribution serait quelque chose comme int a = (int) b; –
@Jeff Storey, j'ai mis à jour la question – Tihom