Java Pitfalls: Time-Saving Solutions and Workarounds to Improve Programs
Michael C. Daconta, Eric Monk, Jan Keller, Keith Bohnenberger · Medical Entomology and Zoology · 2000
LANGUAGE SYNTAX. When is an Method Not Really Overridden? Usage of String Equals() Method versus the ==Operator. Java is Strongly Typed. Is That a Constructor? Cannot Access Overridden Methods. Avoid the Hidden Field Pitfall. Forward References. Design Constructors for Extension. Passing Primitives by Reference. Boolean Logic and Short-Circuit Operators. LANGUAGE SUPPORT. Reclaiming References When Using SoftReference Objects. Causing Deadlock by Calling a Synchronized Method from a Synchronized Method. Properly Cloning an Object. Overriding the equals Method. Avoid Using Constructor for Implementing clone(). Method Dispatching with Reflection, Interfaces, and Anonymous Classes. Handling Exceptions and OutOfMemoryError. UTILITIES AND COLLECTIONS. Ordered Property Keys? Handling Occasionally Huge Collections with Caching and Persistence. Property File or ResourceBundle? Properties Object Pitfalls. Using Vector as a Collection Instead of Old API. INPUT/OUTPUT. Serialization. Unicode, UTF, and Streams. Sending Serialized Objects over Sockets. Try, Catch... Finally? Flushing Image Resources. GUI PRESENTATION. Providing Progress Feedback. Using repaint () Instead of validate () for Re-Layout of Components. Z-Order and Overlapping Components. Solving the Validate, Revalidate, Invalidate Mystery. Stacking Items Vertically. How to Use GridBagLayout Properly. Avoiding Flicker. Components with Embedded HTML. GUI CONTROL. Better Data Validation. Desensitizing GUI Components Based on Application State. Use Threads in Event Handlers to Avoid Freezing Your GUI. Model View Controller and JTree. How to Data Transfer Something Other than Text. A KeyListener That Doesn't Listen? Printing Text, HTML, and Images in a JEditorPane. PERFORMANCE. Lazy Loading Our Way to Better Performance. Using Object Pools for Excessive Object Creation. Performance Watch: Array versus Vector. Avoid Using Temporary Arrays for Dynamic Array Growth. Use StringBuffer Instead of '+' for Concatenation inside a Loop. MISCELLANEOUS. Is There a Better Way to Debug? Encapsulating JNI Calls through Interfaces. Assertions. Index.