interface Comparable { public int compareTo (Object that); } class Byte implements Comparable { private byte value; public Byte (byte value) { this.value = value; } public byte byteValue () { return value; } public int compareTo (Byte that) { return this.value - that.value; } // bridge public int compareTo (Object that) { return this.compareTo((Byte)that); } } class Lists { public static Comparable max (List xs) { Iterator xi = xs.iterator(); Comparable w = (Comparable)xi.next(); while (xi.hasNext()) { Comparable x = (Comparable)xi.next(); if (w.compareTo(x) < 0) w = x; } return w; } } class Test { public static void main (String[] args) { // byte list List xs = new LinkedList(); xs.add(new Byte(0)); xs.add(new Byte(1)); Byte x = (Byte)Lists.max(xs); // boolean list List ys = new LinkedList(); ys.add(new Boolean(false)); ys.add(new Boolean(true)); Boolean y = (Boolean)Lists.max(ys); // run-time exception } }
Example 3: Declarations for the Comparable interface and the Byte class that implements this interface.