Sobes.tech
Middle

Τι είναι οι γενικοί τύποι (Generics);

sobes.tech AI

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

Οι γενικοί τύποι (Generics) είναι ένα μέσο παραμετροποίησης τύπων που επιτρέπει τη δημιουργία καθολικών κλάσεων, διεπαφών και μεθόδων. Επιτρέπουν την εργασία με διάφορους τύπους δεδομένων χωρίς απώλεια της ασφάλειας τύπων κατά τη διάρκεια της μεταγλώττισης.

Τα κύρια πλεονεκτήματα της χρήσης των Generics:

  • Ασφάλεια τύπων: Ο μεταγλωττιστής ελέγχει την συμβατότητα των τύπων κατά τη μεταγλώττιση, βοηθώντας στην ανίχνευση πιθανών σφαλμάτων πριν την εκτέλεση του προγράμματος.
  • Μείωση διπλότυπου κώδικα: Μπορείτε να δημιουργήσετε μια μόνο κλάση ή μέθοδο που λειτουργεί με διαφορετικούς τύπους, αντί να γράφετε ξεχωριστό κώδικα για κάθε τύπο.
  • Καλύτερη αναγνωσιμότητα κώδικα: Η χρήση γενικών τύπων καθιστά τον κώδικα πιο κατανοητό, δείχνοντας με ποιους τύπους δεδομένων εργάζεται.
  • Απαλλαγή από την ανάγκη για ρητό casting: Όταν εργάζεστε με γενικές συλλογές, δεν χρειάζεται να μετατρέψετε ρητά τα στοιχεία στον επιθυμητό τύπο κατά την εξαγωγή.

Παράδειγμα χρήσης σε Java:

// Δημιουργία λίστας που μπορεί να περιέχει μόνο συμβολοσειρές
List<String> stringList = new ArrayList<>();
stringList.add("γεια");
// stringList.add(123); // Σφάλμα μεταγλώττισης, καθώς το 123 δεν είναι συμβολοσειρά

// Λήψη στοιχείου χωρίς ανάγκη για casting
String πρώτοΣτοιχείο = stringList.get(0);

Παράδειγμα χρήσης σε C#:

// Δημιουργία λίστας που μπορεί να περιέχει μόνο ακέραιους
List<int> intList = new List<int>();
intList.Add(10);
// intList.Add("κόσμος"); // Σφάλμα μεταγλώττισης, καθώς το "κόσμος" δεν είναι ακέραιος

// Λήψη στοιχείου χωρίς ανάγκη για casting
int αριθμός = intList[0];

Παράδειγμα γενικής κλάσης:

// Γενική κλάση Box, που μπορεί να περιέχει ένα αντικείμενο οποιουδήποτε τύπου T
public class Box<T> {
    private T item;

    public void setItem(T item) {
        this.item = item;
    }

    public T getItem() {
        return item;
    }
}

// Χρήση της γενικής κλάσης
Box<Integer> intBox = new Box<>();
intBox.setItem(123);
int intΑξία = intBox.getItem(); // Χωρίς ανάγκη για casting

Box<String> stringBox = new Box<>();
stringBox.setItem("δοκιμή");
String stringΑξία = stringBox.getItem(); // Χωρίς ανάγκη για casting

Έτσι, οι γενικοί τύποι είναι ένα ισχυρό εργαλείο για τη δημιουργία ευέλικτου, ασφαλούς και εύκολα συντηρήσιμου κώδικα.