Local Classes
An Introduction with Examples in Java |
Prof. David Bernstein |
Computer Science Department |
bernstdh@jmu.edu |
final
or (since Java v8)
are effectively finalimport java.awt.Point; /** * An encapsulation of a rectangle that uses the coordinates * of a corner and the width and height. * * @author Prof. David Bernstein, James madison University * @version 1.0 */ public class Rectangle { private int height, width, x, y; /** * Explicit Value Constructor. * * @param x The x-coordinate of the corner * @param y The y-coordinate of the corner * @param width The width * @param height The height */ public Rectangle(int x, int y, int width, int height) { this.x = x; this.y = y; this.width = width; this.height = height; } /** * Determine whether or not this Rectangle intersects * the given Rectangle. * * @param other The other Rectangle * @return true if they intersect; false otherwise */ public boolean intersects(Rectangle other) { /** * This calculation is easier to perform using the * coordinates of the upper-left and lower-right corners. * So, a local class that encapsulates rectangles in this * way is used. */ class Rect { private Point min, max; /** * Construct a Rect from a Rectangle. * * @param r The Rect */ public Rect(Rectangle r) { min = new Point(); max = new Point(); min.x = Math.min(r.x, r.x + r.width); min.y = Math.min(r.y, r.y + r.height); max.x = Math.max(r.x, r.x + r.width); max.y = Math.max(r.y, r.y + r.height); } /** * Determine whether or not this Rect intersects the given Rect. * * @param other The other Rect * @return true if they intersect; false otherwise */ public boolean intersects(Rect other) { return (this.max.x >= other.min.x) && (this.min.x <= other.max.x) && (this.max.y >= other.min.y) && (this.min.y <= other.max.y); } } // Construct Rect objects from the Rectangle objects Rect t = new Rect(this); Rect o = new Rect(other); // Compare the Rect objects return t.intersects(o); } }
class LengthComparator implements Comparator<String> { public int compare(String a, String b) { if (a == null) a = ""; if (b == null) b = ""; if (a.length() > b.length()) return 1; else if (a.length() < b.length()) return -1; else return 0; } } Arrays.sort(data, new LengthComparator());