Salut,
soit le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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:
  1. 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?
  2. pour quoi que le compilateur ne peut pas déduire le generic depuis la signature de la méthode.