من هم کنجکاو شدم و جستجو زدم، به نظر میاد که که type inference در قالب همون مفهوم Generics اومده و اونجاست که Type بصورت ثابت تعریف نمیشه و کامپایلر بر اساس محتوا اون رو تشخیص میده:
http://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html