class D { A id(A x){...} } interface I { A id(A x); } class C extends D { Object id(Object x){...} // liefert wie erwartet einen Compilerfehler /** Fehlerausgabe wg. zweiter Regel: * name clash: id(java.lang.Object) in C and id(A) in * D have the same erasure, yet none * overrides the other * class C extends D{ * ^ */ } class E extends D implements I { String id(String x){...} Integer id(Integer x){...} /** Diese Klasse wird OHNE Fehlermeldung * compiliert! Das widerspricht der dritten Regel * (S.16 Example 20) der Spezifikation * Gilad Bracha hat dies als Compilerfehler bestaetigt */ }