Korzystanie z adnotacji
Dodawaj adnotacje do kodu
Korzystanie z adnotacji to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 1 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 Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Czym są adnotacje?
Adnotacje dołączają metadane do kodu. Same w sobie nie zmieniają jego działania, ale narzędzia, kompilatory i biblioteki odczytują je, aby podejmować decyzje.
Adnotację zapisuje się za pomocą @ oraz następującej po nim nazwy, bezpośrednio przed elementem, którego dotyczy.
Pierwsza adnotacja
Biblioteka standardowa udostępnia kilka przydatnych adnotacji. @Deprecated oznacza kod, którego nie należy już używać, i wyświetla ostrzeżenie w miejscu wywołania.
@Deprecated("Use newGreet() instead")
fun greet() = "Hi"
fun newGreet() = "Hello"
fun main() {
println(newGreet())
}Adnotacje z argumentami
Adnotacje mogą przyjmować argumenty zapisywane podobnie jak parametry konstruktora. @Deprecated przyjmuje komunikat oraz opcjonalną wskazówkę ReplaceWith.
@Deprecated(
message = "Renamed for clarity",
replaceWith = ReplaceWith("sum(a, b)")
)
fun add(a: Int, b: Int) = a + b
fun sum(a: Int, b: Int) = a + b
fun main() {
println(sum(2, 3))
}Tłumienie ostrzeżeń
@Suppress nakazuje kompilatorowi wyciszyć określone ostrzeżenia dla oznaczonego elementu. Nazwy ostrzeżeń przekazuje się jako ciągi znaków.
@Suppress("UNUSED_VARIABLE")
fun main() {
val unused = 42
println("Runs without the unused-variable warning")
}JvmStatic i pokrewne
Niektóre adnotacje wpływają na sposób kompilowania kodu Kotlin do JVM. @JvmStatic, @JvmField i @JvmName sterują kodem bajtowym, dzięki czemu osoby wywołujące kod z języka Java otrzymują wygodniejsze API.
W czystym kodzie Kotlin nie mają żadnego działania, ale są istotne podczas współdziałania z Javą.
class Math {
companion object {
@JvmStatic
fun square(x: Int) = x * x
}
}
fun main() {
println(Math.square(5))
}Cele użycia adnotacji
Właściwość może generować kilka elementów JVM: pole, getter, setter i parametry konstruktora. Cele użycia adnotacji wskazują, do którego elementu ma zostać przypisana adnotacja.
Składnia: @get:, @set:, @field:, @param:.
class User(@get:JvmName("fetchName") val name: String)
fun main() {
val u = User("Ada")
println(u.name)
}Throws podczas współdziałania z Javą
Kotlin nie ma kontrolowanych wyjątków, dlatego wywołania z języka Java nigdy nie widzą klauzul throws, chyba że dodadzą Państwo @Throws. Zapisuje ona typ wyjątku w sygnaturze kodu bajtowego.
import java.io.IOException
@Throws(IOException::class)
fun readData(): String {
return "data"
}
fun main() {
println(readData())
}Wiele adnotacji
Na jednym elemencie można umieścić kilka adnotacji. Każdą z nich zapisuje się w osobnym wierszu lub oddziela spacjami. Kolejność nie ma znaczenia.
@Deprecated("old")
@Suppress("DEPRECATION")
fun legacy() = "still here"
fun main() {
println(legacy())
}Adnotacje na wyrażeniach
Adnotacje mogą również dotyczyć wyrażeń i deklaracji lokalnych, a nie tylko funkcji lub klas na poziomie głównym. Często stosuje się je w ten sposób z @Suppress wewnątrz ciała funkcji.
fun main() {
@Suppress("UNUSED_VARIABLE")
val temp = computeOnce()
println("Done")
}
fun computeOnce() = 99OptIn i eksperymentalne API
Biblioteki oznaczają niestabilne API za pomocą niestandardowych adnotacji wymagających jawnej zgody. Aby ich użyć, należy zaakceptować ryzyko za pomocą @OptIn(SomeApi::class) lub przekazać tę adnotację dalej.
Dzięki temu korzystanie z eksperymentalnych funkcji jest jawne, a nie przypadkowe.
fun main() {
// @OptIn would appear here when calling an experimental function
println("Opt-in keeps unstable APIs visible")
}Po co stosować adnotacje
Adnotacje pozwalają przekazywać informacje o intencjach narzędziom: kompilatory ostrzegają o wywołaniach elementów przestarzałych, biblioteki serializujące mapują pola, platformy testowe znajdują metody testowe, a platformy DI łączą zależności.
- Metadane, a nie logika
- Odczytywane podczas kompilacji lub w czasie działania
- Konfiguracja pozostaje blisko kodu
Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat używania adnotacji.
Podsumowanie
Nauczyli się Państwo używać wbudowanych adnotacji:
@Deprecated,@Suppress,@Throws- Współdziałanie z JVM:
@JvmStatic,@JvmName - Cele użycia, takie jak
@get:i@field: - Jawna zgoda na eksperymentalne API
W następnej części zdefiniują Państwo własne adnotacje.
Często zadawane pytania
Czy lekcja „Korzystanie z adnotacji” jest bezpłatna?
Tak — pełny tekst „Korzystanie z adnotacji” 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 Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Korzystanie z adnotacji”?
Dodawaj adnotacje do kodu Ćwiczysz Kotlin 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ąć Kotlin Academy?
Nie wymagamy żadnego doświadczenia. Kotlin 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 1 z 4.
Ile czasu zajmuje lekcja „Korzystanie z adnotacji”?
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 Kotlin Academy?
Tak. Każda lekcja Kotlin 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.
Wszystkie lekcje w tym kursie
- Korzystanie z adnotacji
- Definiowanie adnotacji
- Podstawy refleksji
- Praktyczna refleksja