Sobes.tech
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-ი შიგნეული კლასის, რომელიც ხელმისაწვდომია სტატიკური ველის მეშვეობით.