Sobes.tech
Junior — Middle

Μπορείς να εξηγήσεις την έννοια της ανάθεσης στη γλώσσα Kotlin και την εφαρμογή της;

sobes.tech AI

Απάντηση από AI

Στην Kotlin, η ανάθεση είναι ένας μηχανισμός που επιτρέπει τη μεταβίβαση της υλοποίησης μιας συγκεκριμένης διεπαφής ή ιδιότητας σε ένα άλλο αντικείμενο, αντί να υλοποιείται άμεσα στην κλάση. Αυτό βοηθά στην αποφυγή διπλότυπου κώδικα και απλοποιεί τη σύνθεση.

Το πιο συνηθισμένο παράδειγμα είναι η ανάθεση ιδιοτήτων με τη χρήση της λέξης-κλειδιού by.

Παράδειγμα ανάθεσης ιδιότητας:

class User {
    var name: String by Delegates.observable("") { prop, old, new ->
        println("Η ιδιότητα ${prop.name} άλλαξε από $old σε $new")
    }
}

Επίσης, μπορεί να ανατεθεί η υλοποίηση μιας διεπαφής:

interface Printer {
    fun print()
}

class RealPrinter : Printer {
    override fun print() {
        println("Εκτύπωση εγγράφου")
    }
}

class Manager(printer: Printer) : Printer by printer

fun main() {
    val realPrinter = RealPrinter()
    val manager = Manager(realPrinter)
    manager.print() // η κλήση ανατίθεται στον realPrinter
}

Αυτή η προσέγγιση επιτρέπει τον διαχωρισμό των ευθυνών και την επανάχρηση κώδικα χωρίς κληρονομικότητα.