A few Java tricks to myself
========================================
if ( foo.equals("bar") ) { // ... }
Here, foo may be null, so instead use
if ( "bar".equals(foo) ) { // ... }
This pattern generalizes to using the equals method of the concrete object (put the non-null object on the left side).
========================================
You can use instanceof to ensure an object is the proper type (this can replace a null check), as in
if ( arg1 instanceof String ) { // ... }
========================================
As of Java 1.5 you can declare methods with variable arity, making the syntax a little cleaner and invocation a bit simpler. The old style:
public static void main(String[] args)
becomes
public static void main(String... args)
which can then be called like this:
main("seth", "for", "president")
========================================
Errors and Exceptions derive from Throwable, so you can catch all program hiccups by catching Throwable instead of Exception (or Error).
========================================
Local variables are not initialized with a value; field variables are initialized like so:
Number primitives default to 0.
Objects (Collections) default to null.
Booleans default to false.
========================================
Java has labels, but most people will not appreciate their inclusion and use. For example, the following code is valid Java
https://www.sethholloway.com
========================================
In mixed-type computation, Java upconverts to the larger data type due to widening primitive conversion. Avoid mixed-type computation and comparisons.
========================================
“Although common, the idiom object.getClass().getMethod("methodName")
is broken and should not be used.” – Java Puzzlers sample
========================================
The finally block of a try-catch-finally will always execute (unless there’s a hard crash, System.exit(), System.halt(), or infinite loop before). As such, be careful with returns and mutating objects in the try and finally.
========================================