Java Idioms & Pitfalls
The Java people write out of habit that is wrong or dated: raw types, boxed equality, catching Exception, building strings in a loop, arrays where a List belongs and getters that hand out the field. Ten habits, each one run to see what it actually does.
Who it is for
Fluent, writes it like another language.
For someone confident in the language who wants the traps, the edge cases and the interview questions.
You will get the most out of it if you have written Java recently enough to read it without effort, and have been surprised by it at least once. If you are picking the language up for the first time, start with Java Essentials and come back to this one.
How long it takes
90 graded questions at roughly 45 seconds each is about 68 minutes of answering in total.
At the default five questions a day, and because the session mixes in your other courses, expect around 18 days — call it 3 weeks — to see everything once, plus a few weeks of thinning reviews after that before it is all mastered.
A question is mastered on the third correct answer, once the gap between reviews has grown past a week — so a course cannot be finished in a weekend however long you sit with it.
Question mix
- 60 multiple choice
- 10 concept cards
- 10 predict the output
- 10 put it in order
- 10 matching questions
Syllabus
What you will be asked about
-
01
Raw Types and Erasure
Say what a raw type actually turns off, and where the cast you never wrote fails.
-
02
Boxed Numbers
Predict when == on boxed numbers is true, and choose equals with the right type.
-
03
Null Habits
Replace defensive null checks with the calls that already handle null.
-
04
Catching and Finally
Say what catch (Exception) really covers, and what finally does to a return.
-
05
Building Strings in a Loop
Replace concatenation in a loop with a builder, and spot what + does to other types.
-
06
Arrays Where a List Belongs
Choose between an array and a List, and predict how the bridges between them behave.
-
07
Getters That Leak
Spot where a getter hands out your internal state, and choose a copy or a view deliberately.
-
08
Constants, Interfaces and Enums
Replace int constants and constant interfaces with an enum, and read what an enum gives you.
-
09
What var and record Replace
Use var where it clarifies and records where a class was ceremony, and know what each infers.
-
10
Ceremony With a Shorter Form
Swap fall-through switches and containsKey dances for the constructs that replaced them.
8 more topics, and all 90 questions
Java Idioms & Pitfalls is a Pro course. One subscription opens it and every other course in the catalogue, including the ones still being written.
A question from this course
Raw Types and Erasure
What does this program print?
import java.util.*;
public class Main {
public static void main(String[] args) {
List raw = new ArrayList<String>();
raw.add(1);
System.out.println(raw.get(0));
}
}
Show the answer
A 1
The variable was declared raw, so add takes Object and the String type argument on the right-hand side is not enforced at all - the Integer goes in and comes back out. You get an unchecked warning and nothing else. A raw type disables checking for the whole variable, not just for the generic parameter you left out.
The rest of the track
Java at every depth
Java Essentials
The behaviour underneath the ceremony: what a variable really holds, why 1/2 is 0, and why two Strings that look identical are not always the same object. Ten spines on the code that compiles cleanly and still does something else.
Java Core
Where Java trips developers who use it every day: autoboxing that hides a NullPointerException, a ternary that quietly unboxes, and dispatch rules that pick a method before the program runs. Ten spines on the gap between what the code says and what the JVM does.
Java Data & Collections
The collections framework taken seriously: which container promises what, why remove(1) deletes a position, and how a mutated key disappears from its own HashMap. Ten spines on the containers you use every day and the contracts underneath them.
Java Errors & Edge Cases
Exceptions at the points where they stop behaving the way you assumed: a finally block that discards the exception unwinding through it, a map lookup that throws on the way into an int, a class that fails once and reports a missing definition forever after. Ten spines on the paths your happy-path code never takes.
Java Standard Library
The library people reimplement by hand: what split really returns, StringBuilder, Optional, streams and collectors, comparators, java.time, the Objects helpers and text blocks. Ten built-ins that already do the job, and one behaviour in each that is not the one you assumed.
Java Advanced
The traps a confident Java reader still walks into: erasure, wildcard variance, dispatch decided before the program runs, and a constructor that sees a field before it is assigned. Ten spines of code that compiles cleanly and behaves otherwise.
Java Performance
What actually costs on the JVM, read off code rather than a stopwatch: the allocation that never happens, the concat loop that copies everything twice, the map that rehashes sixteen times on its way to a million entries. Ten spines on the difference between the operation you wrote and the work the VM does.
Java Testing
What a Java test actually asserts, and where that claim is weaker than it looks. Argument order and failure messages, the three kinds of equality, deltas, throwing, fixtures and static state, test doubles, and the difference between a failure and an error.
Java Interview Questions
The Java an interviewer actually probes, answered from the rules rather than from memory. The equals and hashCode contract, the string pool, references and boxing, collections, erasure, checked exceptions, dispatch, immutability, and the what-does-this-print questions behind them.
Start Java Idioms & Pitfalls
in tomorrow’s session.
Enrol and this course joins your daily five, mixed in with everything else you are studying — 90 questions spread over about 18 days rather than dropped on you at once.
Browse the catalogue