La généricité des méthodes en java
Salut,
soit le code suivant:
Code:
1 2 3 4 5
| static <T> void fromArrayToCollection(T[] a, Collection<T> c) {
for (T o : a) {
c.add(o); // Correct
}
} |
ce code compile normalement et aucune erreur n'est signalée. Mais quand je supprime le generic qui se trouve après le modificateur static, une erreur de compilation est signalée:
Code:
1 2 3 4 5 6 7 8 9 10
| error: cannot find symbol
static void fromArrayToCollection(T[] a, Collection<T> c) {
symbol: class T
location: class Main
error: cannot find symbol
for (T o : a) {
symbol: class T
location: class Main
3 errors |
voici quelques questions que je me posent:
- quand je déclare une méthode generic, est ce que le generic après le modificateur de la méthode est obligatoire. si c'est le cas pourquoi?
- pour quoi que le compilateur ne peut pas déduire le generic depuis la signature de la méthode.