Разликата между var в Kotlin и Java 10

1. Въведение

В този кратък урок ще разгледаме разликите между ключовите думи var в Java и Kotlin.

Ние обхващаме идентификатора var в Java по-задълбочено в нашата статия Java 10 LocalVariable Type-Inference и говорим за ключовата дума var в Kotlin в нашата статия Kotlin const, var и val Ключови думи.

2. Незадължителна декларация за тип срещу Декларация за тип

2.1. Котлин

Ако декларираме променлива променлива и я инициализираме едновременно, не е необходимо да указваме типа:

var myVariable = 1

Въпреки това можем да го направим, ако решим да:

var myVariable : Int = 1

Ако искаме да декларираме променлива, без да я инициализираме директно, трябва да посочим нейния тип и можем да присвоим стойност по-късно:

var myVariable : Int myVariable = 1

2.2. Java

В Java можем да използваме var само ако инициализираме променливата на място и не можем да предоставим информация за типа, дори ако искаме:

var myVariable = 1;

Следното е невалидно:

var myVariable; myVariable = 1;

И получаваме грешка по време на компилация:

Cannot infer type: 'var' on variable without initializer

3. Ключова дума срещу идентификатор

В Kotlin var е ключова дума, което означава, че не можем да я използваме като име на променлива, параметър, метод или клас. За разлика от това, Java 10 определя var като идентификатор със специално значение.

Това означава, че в Java 10 все още можем да дефинираме променлива, параметър или метод с името var :

public void var() {     // do something } public void method(int var) {     // do something } public void method() {     int var = 1;     // do something }

Имайте предвид, че от Java 10 вече не е възможно да се дефинира клас с името var :

public static class var { }

Горният код води до грешка по време на компилация:

Error:(1, 1) java: 'var' not allowed here   as of release 10, 'var' is a restricted type name and cannot be used for type declarations

Това гарантира обратна съвместимост с по-старите версии на Java.

4. Изменяемост

Променлива, декларирана с var в Kotlin, винаги е променлива, докато променливата, декларирана с var в Java, може да бъде променлива или окончателна:

var mutableInt = 1; final var immutableInt = 1;

В Kotlin няма последна ключова дума - крайните променливи се декларират с val вместо:

val immutableInt = 1

5. Глобално срещу локално използване

5.1. Котлин

В Kotlin можем да използваме var, за да декларираме глобални и локални променливи, както и членове на класа:

var myGlobalVar = 3 class MyClass {     var myVar = 3         public fun myFunction() : Int {         var myVariable = 3         return myVariable     } }

5.2. Java

В Java можем да използваме var само за деклариране на локални променливи:

public class MyClass {     //not possible for member variables     //private var myVar = 1;     public int myFunction() {         var myVariable = 3;         return myVariable;     } }

6. Заключение

В тази статия разгледахме разликата между var в Kotlin и Java. Въпреки че и двете изглеждат много сходни, има фундаментални разлики между тях.

Най-важната разлика е, че var в Kotlin е свързана с мутабилност, а var в Java е за извод на типа.