当前页面:
在线文档首页 >
JDK 5 Documentation v1.1.8, Java 2 SDK 英文文档
JDK 5 Documentation v1.1.8, Java 2 SDK 英文文档
Further Example: An API with coordinated inner classes
Sometimes a class-based API will include as an essential feature secondary
classes or interfaces. These latter can be structured quite naturally as
static
inner classes of the main class.
To see an example of this, imagine a hypothetical utility Sort
with an interface
Comparer
which virtualizes the comparison operation, and a handful of
standard reusable comparison implementations. (This example has a flaw:
Comparer
is generic enough to stand alone.) The code might look like this:
public class Sorter {
public interface Comparer {
/** Returns <0 if x < y, etc. */
int compare(Object x, Object y);
}
public static void sort(Object keys[], Comparer c) {...}
public static void sort(Object keys[], Comparer c,
Object values[]) {...}
public static void sort(String keys[], Object values[])
{ sort(keys, stringComparer, values); }
public static class StringComparer implements Comparer {
public int compare(Object x, Object y) {
if (x == null) return (y == null) ? 0 : -1;
if (y == null) return 1;
return x.toString().compareTo(y.toString());
}
}
public static final Comparer stringComparer
= new StringComparer();
public static class LongComparer implements Comparer {
... long lx = ((Number)x).longValue(); ...
}
public static final Comparer longComparer
= new LongComparer();
/** Compose 2 comparisons, presumably on distinct sub-keys. */
public static class CombinedComparer implements Comparer {...}
public static Comparer combine(Comparer c1, Comparer c2) {...}
...
}
|
Contents | Prev | Next
Inner Classes Specification (HTML generated by dkramer on March 15, 1997)
Copyright © 1996, 1997 Sun Microsystems, Inc.
All rights reserved
Please send any comments or corrections to john.rose@eng.sun.com