¿Cómo leer un solo carácter desde la consola en Java (como lo escribe el usuario)?

¿Hay una manera fácil de leer un solo carácter desde la consola a medida que el usuario lo escribe en Java? ¿Es posible? He intentado con estos métodos pero todos esperan a que el usuario presioneentrar llave:

char tmp = (char) System.in.read();
char tmp = (char) new InputStreamReader(System.in).read ();
char tmp = (char) System.console().reader().read();           // Java 6

Estoy empezando a pensar que System.in no tiene conocimiento de la entrada del usuario hasta queentrar se presiona.

Respuestas a la pregunta(5)

Su respuesta a la pregunta