Un petit programme marrant (enfin pour moi) qui permet
de faire de la covariance sur les param�tres en Java.

public class Covariance {

  public static class A<T extends A> {
    public void m(T t) {
      System.out.println("A.m() "+t);
    }
  }

  public static class B<T extends B> extends A<T> {
    public void m(T t) {
          System.out.println("A.m() "+t);
    }
  }

  public static void main(String[] args) {
    A a=new A();
    B b=new B();

    b.m(a);
  }
}

Dans l'exemple, la m�thode m() de B red�finie, la
m�thode m() de A :)

Le programme compile avec des warnings,
et plante � l'ex�cution :

Exception in thread "main" java.lang.ClassCastException
        at Covariance$B.m(Covariance.java:9)
        at Covariance.main(Covariance.java:19)

Comme quoi, avec un peut de mauvaise volont�, on peut
faire la m�me chose qu'en Eiffel :)

Remi

Répondre à