Sobes.tech
Junior

Ποιες μεταβλητές μπορούν να χρησιμοποιηθούν σε μια κλάση δεδομένων (data class);

sobes.tech AI

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

Σε μια data class μπορούν να χρησιμοποιηθούν:

  • val (μόνο για ανάγνωση ιδιότητα): Η ιδιότητα αρχικοποιείται κατά τη δημιουργία του αντικειμένου και δεν μπορεί να τροποποιηθεί στη συνέχεια. Είναι μέρος των αυτόματα παραγόμενων μεθόδων (equals(), hashCode(), toString(), copy).
  • var (μεταβλητή ιδιότητα): Η ιδιότητα μπορεί να τροποποιηθεί μετά τη δημιουργία του αντικειμένου. Είναι επίσης μέρος των παραγόμενων μεθόδων.
  • Ιδιότητες που δηλώνονται στο σώμα της κλάσης: Αυτές οι ιδιότητες δεν αποτελούν μέρος των κύριων ιδιοτήτων της data class και δεν συμμετέχουν στη δημιουργία των τυπικών μεθόδων.

Παράδειγμα:

data class User(
    val id: Int, // μόνο για ανάγνωση, μέρος των κύριων ιδιοτήτων
    var name: String, // μεταβλητή, μέρος των κύριων ιδιοτήτων
    val creationTime: Long = System.currentTimeMillis() // μόνο για ανάγνωση, με προεπιλεγμένη τιμή, μέρος των κύριων ιδιοτήτων
) {
    val isAdmin: Boolean = false // μόνο για ανάγνωση, δεν αποτελεί μέρος των κύριων ιδιοτήτων, δεν περιλαμβάνεται σε equals/hashCode/toString
}