Cours

Attention Generification

Le but de cet exercice est d'introduire des types paramétrés (generics) dans un code existant sans en changer la sémantique.

import java.util.List;

public class Pair {
  private final Object first;
  private final Object second;

  public Pair(Object first,Object second) {
    this.first=first;
    this.second=second;
  }
  public Object getFirst() {
    return first;
  }
  public Object getSecond() {
    return second;
  }
  public boolean isContained(List list) {
    return list.contains(this);
  }
  public static void main(String[] args) {
    Pair p1=new Pair("toto",3);
    Pair p2=new Pair(p1,"titi");

    Pair p3=(Pair)p2.getFirst();
    String s=(String)p3.getFirst();
    System.out.println(p3+" "+s);

    Pair p4;
    if (args.length==0)
      p4=p1;
    else
      p4=new Pair("titi","tutu");
  }
}
    

Ré-écrire l'ensemble du code de pour que la classe Pair soit transformé en Pair<U,V>.
Penser à :

David Vincent les a vus

Dans le but d'écrire un logiciel de synthèse d'images par lancé de rayon. Nous avons défini les classes Facet qui représente une facette, Sphere qui représente une boule et Box qui représente une boite rectangulaire en 3D.
Ces classes implantent déjà toute une méthode double intersect(Ray ray) qui caclul si le rayon intersecte l'objet et si oui quelle est la distance entre l'origine du rayon et le point d'intersection. La classe Ray représente un rayon(basiquement un vecteur et un point d'origine).

Reflection & Annotation

On souhaite définir une nouvelle annotation nommée ThreadSafe indiquant si un code est ou non thread-safe ainsi qu'une méthode permettant d'exécuter de façon sûre un code.