Ograniczenia var
Gdzie nie można używać var
Ograniczenia var to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.
var ma swoje zasady
var jest wygodny, ale ma ograniczenia. Działa wyłącznie w przypadku zmiennych lokalnych z inicjalizatorem. Wiedza o tym, gdzie nie można go używać, pozwala uniknąć frustrujących błędów kompilacji.
Tylko zmienne lokalne
var jest dozwolony wyłącznie dla zmiennych lokalnych, czyli wewnątrz metod, pętli i tym podobnych konstrukcji. Poniższy przykład jest poprawny, ponieważ zmienna jest lokalna.
public class Main {
public static void main(String[] args) {
var greeting = "OK for locals";
System.out.println(greeting);
}
}Nie dla pól
Nie można używać var dla pól klasy. Pola muszą mieć jawnie zadeklarowany typ. W tym przykładzie count jest zwykłym polem.
public class Main {
static int count = 0;
public static void main(String[] args) {
count = 5;
System.out.println(count);
}
}Nie dla parametrów metod
Parametry metod wymagają jawnie określonych typów. var nie jest dozwolony na liście parametrów, dlatego ta metoda bezpośrednio deklaruje String name.
public class Main {
static void greet(String name) {
System.out.println("Hi " + name);
}
public static void main(String[] args) {
greet("Lee");
}
}Nie dla typów zwracanych
Typem zwracanym przez metodę nie może być var; musi on być określony jawnie. Kompilator nie wywnioskowuje typów zwracanych.
public class Main {
static int square(int x) {
return x * x;
}
public static void main(String[] args) {
System.out.println(square(6));
}
}Wymagany inicjalizator
Nie można zapisać var x; bez wartości. Bez inicjalizatora kompilator nie ma podstawy do wywnioskowania typu. Zawsze należy od razu przypisać wartość.
public class Main {
public static void main(String[] args) {
var ready = true;
System.out.println(ready);
}
}Inicjalizator nie może mieć wartości null
var x = null; powoduje błąd, ponieważ null nie ma konkretnego typu. Zamiast tego należy podać wartość o określonym typie, na przykład pusty napis.
public class Main {
public static void main(String[] args) {
var text = "";
text = "now has a value";
System.out.println(text);
}
}Brak skróconej składni inicjalizacji tablicy
Nie można zapisać var nums = {1, 2, 3};. Skrócona składnia z nawiasami klamrowymi wymaga zadeklarowanego typu tablicy. Zamiast tego należy użyć new int[]{...}.
public class Main {
public static void main(String[] args) {
var nums = new int[]{1, 2, 3};
System.out.println(nums.length);
}
}To nie jest słowo zastrzeżone
Co ciekawe, var jest zastrzeżoną nazwą typu, a nie słowem kluczowym. Nadal nie można nazwać klasy var, ale ta zasada ma wąski zakres. W praktyce należy traktować var jak każdą nowoczesną konstrukcję składniową.
public class Main {
public static void main(String[] args) {
var var2 = "identifiers can contain var";
System.out.println(var2);
}
}Lambda wymaga typu docelowego
Nie można przypisać lambdy bezpośrednio do var, ponieważ lambda wymaga docelowego typu interfejsu funkcyjnego, na podstawie którego można wywnioskować jej typ. Należy jawnie zadeklarować typ interfejsu.
import java.util.function.IntUnaryOperator;
public class Main {
public static void main(String[] args) {
IntUnaryOperator doubler = x -> x * 2;
System.out.println(doubler.applyAsInt(21));
}
}Podsumowanie ograniczeń
Należy pamiętać o ograniczeniach: tylko zmienne lokalne, wymagany inicjalizator, brak null, brak lambdy bez typu docelowego, brak skróconej składni tablic z nawiasami klamrowymi oraz brak zastosowania dla pól, parametrów i typów zwracanych.
public class Main {
public static void main(String[] args) {
var ok = 42;
System.out.println("var is for locals: " + ok);
}
}Szybkie sprawdzenie
Które z poniższych zastosowań var jest poprawne?
Podsumowanie
Nauczyli się Państwo ograniczeń var:
- Dozwolony wyłącznie dla zmiennych lokalnych z inicjalizatorem
- Nie można go używać dla pól, parametrów ani typów zwracanych
- Nie można wywnioskować typu na podstawie
nullani lambdy bez typu docelowego - Brak skróconej składni tablic z nawiasami klamrowymi
- Jest zastrzeżoną nazwą typu, a nie słowem kluczowym
Często zadawane pytania
Czy lekcja „Ograniczenia var” jest bezpłatna?
Tak — pełny tekst „Ograniczenia var” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Ograniczenia var”?
Gdzie nie można używać var Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Java Academy?
Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Ograniczenia var”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?
Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.