Java Reference
In-Depth Information
To modify it so that min can find the minimum of any array whose base type
is known to have method compareTo defined on it, we change the base type of
parameter b to the name of the interface, Comparable , and change the less-than
relation within the body of the method to a call to method compareTo , as shown
in Fig. 12.4. Here, you can see interface Comparable being used as a class-type,
in that the interface name is used as the type of a variable.
Get Compar-
able and class-
es that use it
from lesson
page 12.3.
Implementing interface Comparable
Figure 12.5 contains class Pixel , each instance of which represents a pixel
in a window. It has a pair (x,y) of coordinates. Only a constructor and method
compareTo are shown, but there may be other methods. We note three things
about class Pixel .
1. Pixel implements Comparable , as shown in the first line of the class.
2. Parameter ob of method compareTo has type Object , as required by
interface Comparable .
3. Each time parameter ob is used, it is cast back to Pixel —without this
cast, fields x and y of the parameter could not be referenced. This cast
will cause an exception if ob is not really a Pixel . The specification of
compareTo makes clear that ob must be a Pixel .
It may seem like a lot of extra baggage to implement Comparable in class Pixel
—making the parameter be an Object but then casting back to Pixel . However,
public class Pixel implements Comparable {
private int x = 0; // horizontal coordinate
private int y = 0; // vertical coordinate
...
/** Constructor: instance with horizontal coordinate xp and vertical coordinate yp */
public Pixel( int xp, int yp)
{ x = xp; y = yp; }
/** = 0 if this Pixel and Pixel ob are the same;
1 if this Pixel precedes Pixel ob in row-major order;
-1 if this Pixel follows Pixel ob in row-major order. */
public int compareTo(Object ob) {
if (y > ((Pixel)ob).y) return -1;
if (y < ((Pixel)ob).y) return 1;
if (x > ((Pixel)ob).x) return -1;
if (x < ((Pixel)ob).x) return 1;
return 0;
}
}
Figure 12.5:
Class Pixel
Search WWH ::




Custom Search