class Identite { private String nom; private String prenom; Identite(String nom, String prenom) { this.nom = nom; this.prenom = prenom; } String getNom() { return nom; } String getPrenom() { return prenom; } public boolean equals(Object obj) { return (obj instanceof Identite) && ((Identite)obj).getNom().equals(nom) && ((Identite)obj).getPrenom().equals(prenom); } } class Info { private int val; private Identite identite ; Info(int val, String nom, String prenom) { this.val = val; identite = new Identite(nom, prenom); } int getVal() { return val; } Identite getIdentite() { return identite; } public boolean equals(Object obj) { return (obj instanceof Info) && (((Info)obj).getVal() == this.val) && ((Info)obj).getIdentite().equals(identite); } } class EssaiInfo { public static void main(String arg[]) { Info info1 = new Info(15, "Charon", "Irene"); Info info2 = new Info(15, "Charon", "Irene"); Info info3 = new Info(15, "Charon", "Lou"); Info info4 = new Info(12, "Charon", "Irene"); System.out.println("avec ==, info1 et info2 sont egaux : " + (info1 == info2)); System.out.println("avec equals, info1 et info2 sont egaux : " + info1.equals(info2)); System.out.println("avec equals, info1 et info3 sont egaux : " + info1.equals(info3)); System.out.println("avec equals, info1 et info4 sont egaux : " + info1.equals(info4)); } } /* On obtient : avec ==, info1 et info2 sont egaux : false avec equals, info1 et info2 sont egaux : true avec equals, info1 et info3 sont egaux : false avec equals, info1 et info4 sont egaux : false */