[java] What is a raw type and why shouldn't we use it?