Что эквивалентно ключевому слову C # 'var' в Java? - PullRequest
251 голосов
/ 10 августа 2010

Одно использование ключевого слова var в C # - неявное объявление типа. Каков эквивалентный синтаксис Java для var ?

Ответы [ 15 ]

3 голосов
/ 06 ноября 2017

Lombok поддерживает var , но все еще классифицируется как экспериментальный:

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);

Здесь - ловушка, которую следует избегать при попытке использовать ее в IntelliJ IDEA. Похоже, работает как ожидалось, включая автоматическое завершение и все. Пока не будет «нехакерского» решения (например, из-за JEP 286: вывод типа локальной переменной ), это может быть вашим лучшим выбором прямо сейчас.

Обратите внимание, что val также поддерживается Lombok без изменения или создания lombok.config.

3 голосов
/ 09 ноября 2014

Я знаю, что это старше, но почему бы не создать класс var и создать конструкторы с разными типами, и в зависимости от того, какие конструкторы вызываются, вы получаете var с другим типом.Вы даже можете встроить методы для преобразования одного типа в другой.

2 голосов
/ 26 апреля 2018

Вы можете в Java 10, но только для Локальных переменных, то есть

Можно,

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

Но не могу,

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

Проверьте spec для получения дополнительной информации.

0 голосов
/ 12 апреля 2018

Эта функция теперь доступна в Java SE 10. Статическая, типобезопасная переменная наконец-то вошла в мир Java:)

источник: https://www.oracle.com/corporate/pressrelease/Java-10-032018.html

0 голосов
/ 01 апреля 2018

В общем, вы можете использовать класс Object для любого типа, но вы должны выполнить приведение типов позже!

Например: -

Object object = 12;
    Object object1 = "Aditya";
    Object object2 = 12.12;

    System.out.println(Integer.parseInt(object.toString()) + 2);

    System.out.println(object1.toString() + " Kumar");
    System.out.println(Double.parseDouble(object2.toString()) + 2.12);
...