What is the equivalent of the C# 'var' keyword in Java?

Viewed 120572

One use of the var keyword in C# is implicit type declaration. What is the Java equivalent syntax for var?

15 Answers

Lombok supports var but it's still classified as experimental:

import lombok.experimental.var;

var number = 1; // Inferred type: int
number = 2; // Legal reassign since var is not final
number = "Hi"; // Compilation error since a string cannot be assigned to an int variable
System.out.println(number);

Here is a pitfall to avoid when trying to use it in IntelliJ IDEA. It appears to work as expected though including auto completion and everything. Until there is a "non-hacky" solution (e.g. due to JEP 286: Local-Variable Type Inference), this might be your best bet right now.

Note that val is support by Lombok as well without modifying or creating a lombok.config.

You can, in Java 10, but only for Local variables, meaning,

You can,

var anum = 10; var aString = "Var";

But can't,

var anull = null; // Since the type can't be inferred in this case

Check out the spec for more info.

Related