I was taken aback earlier today when debugging some code to find that something like the following does not throw a compile-time exception:
public Test () {
Because conceivably getList() could be returning a subclass of HashMap which also implements List. Unlikely, yes, but possible, and therefore compilable.
getList()
HashMap
List