Junior
Τι ξέρεις για την κλάση Object;
sobes.tech AI
Απάντηση από AI
Το java.lang.Object είναι η ριζική κλάση στην ιεραρχία των κλάσεων Java. Κάθε κλάση κληρονομεί έμμεσα από το Object.
Βασικές μέθοδοι:
equals(Object obj): Συγκρίνει το τρέχον αντικείμενο με ένα άλλο για ισότητα. Από προεπιλογή, συγκρίνει τις αναφορές.hashCode(): Επιστρέφει τον κωδικό hash του αντικειμένου. Χρησιμοποιείται σε συλλογές που βασίζονται σε πίνακες κατακερματισμού (π.χ.HashMap,HashSet). Αν δύο αντικείμενα είναι ίσα σύμφωνα με τοequals(), οιhashCode()τους πρέπει να είναι ίσοι.toString(): Επιστρέφει μια αναπαράσταση σε συμβολοσειρά του αντικειμένου. Από προεπιλογή, επιστρέφει το όνομα της κλάσης +@+ τον κωδικό hash σε δεκαεξαδική μορφή. Συχνά υπερισχύει για να παρέχει μια πιο ενημερωτική αναπαράσταση.getClass(): Επιστρέφει ένα αντικείμενοClassπου αντιπροσωπεύει την κλάση του αντικειμένου κατά την εκτέλεση.notify(): Επαναφέρει την εκτέλεση ενός νήματος που περιμένει στον μονοίρο αυτού του αντικειμένου.notifyAll(): Επαναφέρει την εκτέλεση όλων των νημάτων που περιμένουν στον μονοίρο αυτού του αντικειμένου.wait()/wait(long timeout)/wait(long timeout, int nanos): Κάνει το τρέχον νήμα να περιμένει μέχρι να καλέσει άλλο νήμαnotify()ήnotifyAll()σε αυτό το αντικείμενο ή να λήξει ο καθορισμένος χρόνος. Μπορεί να κληθεί μόνο μέσα σε συγχρονισμένα μπλοκ ή μεθόδους.clone(): Δημιουργεί και επιστρέφει ένα αντίγραφο αυτού του αντικειμένου. Απαιτεί την υλοποίηση της διεπαφήςCloneable.finalize(): Καλείται από τον συλλέκτη απορριμμάτων πριν διαγραφεί το αντικείμενο. Δεν συνιστάται η χρήση του λόγω απρόβλεπτης συμπεριφοράς.
Παράδειγμα υπερφόρτωσης των equals() και hashCode():
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
Η κλάση Object παρέχει θεμελιώδεις μηχανισμούς που είναι απαραίτητοι για τη λειτουργία των αντικειμένων στη Java, όπως η σύγκριση, η κατακερματισμός, ο συγχρονισμός νημάτων και η απόκτηση πληροφοριών σχετικά με την κλάση.