Junior — Middle
რა ბაიტკოდი იქმნება Kotlin-ში companion object-ის განცხადებისთვის Java პროექტში კომპილაციის დროს?
sobes.tech AI
პასუხი AI-სგან
Kotlin-ში, JVM ბაიტკოდზე კომპილაციის დროს, companion object განცხადება გარდაიქმნება სტატიკურ შიგნეულ კლასად სახელწოდებით Companion. ეს კლასი შეიცავს ყველა წევრს companion object-ს როგორც ჩვეულ მეთოდებს და ველებს.
Java კოდში, companion object-ის წევრებზე წვდომა ხდება საექსტრაკტო კლასის სტატიკურ ველზე Companion-ის მითითებით.
Kotlin-ის მაგალითი:
class MyClass {
companion object {
fun foo() = "Hello"
}
}
კომპილირებული ბაიტკოდი შეიცავს კლასს MyClass$Companion და მეთოდს foo(), ხოლო MyClass-ში იქნება სტატიკური ველი Companion ტიპის MyClass$Companion.
Java-ში ეს დაახლოებით ასე გამოიყურება:
MyClass.Companion.foo();
ამ გზით, companion object-ის განხორციელება ხდება როგორც singleton-ი შიგნეული კლასის, რომელიც ხელმისაწვდომია სტატიკური ველის მეშვეობით.