public class FinestComparator { /* Παράδειγμα χρήσης interface ως τύπο τοπικής μεταβλητής στο σώμα μιας μεθόδου. */ public Object findLargest(Object object1, Object object2) { StrictlyComparable obj1 = (StrictlyComparable)object1; StrictlyComparable obj2 = (StrictlyComparable)object2; if ((obj1).isLarger(obj2) > 0) return object1; else return object2; } /* Παράδειγμα χρήσης interface ως τύπο τοπικής μεταβλητής στο σώμα μιας μεθόδου. */ public Object findSmallest(Object object1, Object object2) { StrictlyComparable obj1 = (StrictlyComparable)object1; StrictlyComparable obj2 = (StrictlyComparable)object2; if ((obj1).isLarger(obj2) < 0) return object1; else return object2; } /* η μέθοδος isEqual δίνεται εδώ με δύο διαφορετικές εκδοχές * οι οποίες είναι ισοδύναμες. */ public boolean isEqual(Object object1, Object object2) { StrictlyComparable obj1 = (StrictlyComparable)object1; StrictlyComparable obj2 = (StrictlyComparable)object2; if ( (obj1).isLarger(obj2) == 0) return true; else return false; } /* Παράδειγμα χρήσης interface ως τύπο τυπικής παραμέτρου σε μία μέθοδο. */ public boolean isEqual(StrictlyComparable object1, StrictlyComparable object2) { if ( (object1).isLarger(object2) == 0) return true; else return false; } public static void main(String args[]) { Point p = new Point(10,20); Rectangle rec1 = new Rectangle(p, 30, 40); Rectangle rec2 = new Rectangle(p, 30, 40); FinestComparator comp = new FinestComparator(); System.out.println("rec1 is "+rec1.toString()); System.out.println("rec2 is "+rec2.toString()); if( !comp.isEqual(rec1,rec2) ) { System.out.println( comp.findLargest(rec1, rec2).toString()+" is larger!"); System.out.println( comp.findSmallest(rec1, rec2).toString()+" is smaller!"); } else { System.out.println("Objects are equal!"); } } }