Also when everything is a string which you need to parse, should your parsing rountines have a bug, or if you do not handle parsing exceptions properly your compiler can not help here either.Dynamic casts, conversions, dynamic proxies, reflection, CGLIB, all runtime exceptions are all dynamic behaviour in Java that your compiler can not check for you.