The use of type inference with var isn't pushing Java towards the dynamic binding domain. Java is still a strongly-typed static language. The type inference in Java is syntactic sugar. The compiler infers the type and adds it to the bytecode. In dynamic binding, a variable type is inferred at runtime. This can lead to more errors being discovered later.