Ключове слово var було додано у java починаючи з 10 версії. За його допомогою можна оголошувати локальні змінні без явної вказівки типу. Компілятор визначає тип змінної використовуючи інформацію отриману від ініціалізатора змінної.
Розглянемо приклад в якому потрібно зчитати звичайний текстовий файл. Спочатку без використання ключового слова var:
package wiki.it.notes.java.core.var;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
String fileName = "text.txt";
File file = new File(fileName);
try(FileReader fileReader = new FileReader(file.getAbsolutePath());
BufferedReader bufferedReader = new BufferedReader(fileReader)) {
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}Тепер той самий по функціоналу код з використанням var:
package wiki.it.notes.java.core.var;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
var fileName = "text.txt";
var file = new File(fileName);
try(var fileReader = new FileReader(file.getAbsolutePath());
var bufferedReader = new BufferedReader(fileReader)) {
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}Ключова зміна відбулась у рядках 11-14. Наприклад 12 рядок, замість:
File file = new File(fileName);Стало:
var file = new File(fileName);Також варто звернути увагу, що ми використали var у блоці try-with-resources і це працює.
Використання ключового слова var допомагає зробити код більш коротшим, без шкоди для його сприйняття. При читанні var file = new File(fileName); тип змінної зрозуміло з ім’я ініціалізатору.
Висновки:
- ключове слово var можна використовувати лише для оголошення локальних змінних всередині конструкторів, методів, блоків ініціалізації
- при оголошенні змінної за допомогою var, треба обов’язково одразу її ініціалізувати в тому ж самому операторі, інакше працювати не буде, компілятор не зможе визначити тип змінної
- змінні var можна оголошувати як final. У нашому прикладі потрібно просто написати: final var file = new File(fileName);