Exercice Java trouver 6 erreurs de code

Bonjour,

Le but est de trouver 6 erreurs dans le code suivant :
package exam;
import java.util.List;

public class Employee extends Serializable {
private name;

public String getName() {
return name
}

public void setName(String name) {
name = name;
}
public static void main(String[] args) {
List<Employee> employees=new List<Employee>();
for(String name:args) {
employees.add(new Employee(name));
}
}
}


Ce que j'ai trouvé :

1ere erreur: private String name;
2eme erreur: return name ;

Ensuite je ne suis pas sûr:

3eme erreur : this.name = name;
4eme erreur : List<Employee> employees=new ArrayList<Employee>();

Et je n'ai pas d'idée pour les 5eme et 6eme erreurs...

Je vous remercie d'avance pour votre aide !

2 réponses

  1. D'accord et je me demandais : ca veut dire quoi ce bout de code?
    for(String name:args) {
    employees.add(new Employee(name));
    }


    je ne comprends pas comment fonctionne le for(String name:args)
    1. Contributeur
      Pour chaque String name dans args ajouter un nouvel Employee(name) dans employeees
    2. Modérateur
      C'est une boucle for each, qui parcourt le tableau case par case, c'est donc équivalent à :

      for (int i=0; i<args.length; i++)
      {
          String name = args[i];
          employees.add(new Employee(name));
      } 


      Remarque : on peut aussi utiliser ce genre de boucle sur des objets Iterable (les Collection en particuler), les deux codes suivants sont donc "équivalents" :

      for (Employee emp : employees)
      {
          ...
      }
      
      for (Iterator<Employee> it = employees.iterator(); it.hasNext(); )
      {
          Employee emp = it.next();
          ...
      }
    3. Contributeur
      De plus les boucles for simplifiées sont (parfois) plus rapide que les boucles for normales (selon le type d'objet, et la JVM; par exemple ces boucles for sont plus rapides que des for classiques sur Android (et sa VM Dalvik))
    4. Modérateur
      En effet, les iterator sont toujours plus rapide que l'accès à des méthodes, par exemple des get(i) sur des LinkedList va devoir parcourir tous les éléments entre 0 et i pour récupérer l'objet, ce qui va faire un parcours de tous les éléments beaucoup plus long que les itérator qui eux vont se déplacer d'un objet à son suivant direct en utilisant la structure interne de la classe (souvent optimisée, comme sous Android j'imagine)
  2. Contributeur
    Voici un outil qui détecte certaines fautes et ambiguités dans des codes java.
    Plus sérieusement, les fautes 5 et 6 sont:
    - pas de constructeur défini pour Employee
    - classe Serializable pas importée (je crois)
    De plus, si tu utilises une ArrayList, importe la aussi.
    Le Visual Basic c'est bien, mais qu'au début. C++ wins everything.
    1. Modérateur
      Serializable n'est pas une classe mais une interface, il faut donc faire implements à la place de extends (et importer java.io.Serializable)

      Remarque : en pratique il faudrait aussi implémenter les attributs et méthodes de cette interface pour qu'elle puisse être utilisée (voir sa documentation : java.io.Serializable)