Junior
Γιατί σε ορισμένα interfaces δεν ορίζονται μέθοδοι;
sobes.tech AI
Απάντηση από AI
Οι marker διεπαφές (marker interfaces) δεν ορίζουν μεθόδους. Χρησιμοποιούνται για να σηματοδοτήσουν μια κλάση, υποδεικνύοντας ότι διαθέτει ένα συγκεκριμένο χαρακτηριστικό ή δυνατότητα.
Παραδείγματα marker interfaces:
java.io.Serializable: Σηματοδοτεί μια κλάση των αντικειμένων της οποίας μπορούν να σειριοποιηθούν.java.lang.Cloneable: Σηματοδοτεί μια κλάση των αντικειμένων της οποίας μπορούν να κλωνοποιηθούν (υποστηρίζει τη μέθοδοclone()).java.util.RandomAccess: Σηματοδοτεί λίστες που υποστηρίζουν γρήγορη (σταθερό χρόνο) τυχαία πρόσβαση στα στοιχεία τους.
Η χρήση των marker interfaces επιτρέπει:
- Ταυτοποίηση κλάσεων: Έλεγχος του τύπου ενός αντικειμένου για να διαπιστωθεί αν ανήκει σε μια συγκεκριμένη ομάδα, χρησιμοποιώντας τον τελεστή
instanceof.// έλεγχος αν ένα αντικείμενο είναι σειριοποιήσιμο if (object instanceof Serializable) { // εκτέλεση σειριοποίησης } - Αλλαγή συμπεριφοράς: Τα API μπορούν να αλλάξουν τη συμπεριφορά τους ανάλογα με το αν η κλάση υλοποιεί μια marker διεπαφή. Για παράδειγμα, αν μια λίστα υλοποιεί το
RandomAccess, οι λειτουργίες πάνω της μπορούν να βελτιστοποιηθούν. - Περιορισμός πρόσβασης: Ορισμένα API μπορεί να απαιτούν από τα αντικείμενα που δέχονται να υλοποιούν μια συγκεκριμένη marker διεπαφή.
- Σημειώσεις: Σε πιο σύγχρονες προσεγγίσεις, πολλά σενάρια χρήσης marker interfaces υλοποιούνται μέσω annotations. Ωστόσο, οι marker διεπαφές εξακολουθούν να χρησιμοποιούνται στη βιβλιοθήκη Java και σε legacy κώδικα.