Anonymous Classes
An Introduction with Examples in Java |
Prof. David Bernstein |
Computer Science Department |
bernstdh@jmu.edu |
new
operatorfinal
or (since Java v8)
are effectively finalimport javax.swing.*; import javax.swing.text.*; /** * A JTextField that behaves like a stack in the sense that * characters can only be added and removed from the "top" * (i.e., right side) of the String. * * @author Prof. David Bernstein, James Madison University * @version 1.0 * */ public class StackTextField extends JTextField { private static final long serialVersionUID = 1L; /** * Default Constructor. */ public StackTextField() { Document model = new PlainDocument() /* * An anonymous class that overrides some methods in * the PlainDocument class. */ { private static final long serialVersionUID = 1L; /** * Handle insertString messages. * * @param offs The offset * @param s The String to insert * @param a The AttributeSet describing the inserted String */ public void insertString(int offs, String s, AttributeSet a) throws BadLocationException { if (offs == getLength()) super.insertString(offs, s, a); } /** * Handle remove messages. * * @param offs The offset * @param len The number of characters to remove */ public void remove(int offs, int len) throws BadLocationException { if (offs + len == getLength()) super.remove(offs, len); } }; // Note the ; since the expression must part of a statement this.setDocument(model); } }
Arrays.sort(data, new 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; } });