
Ποια είναι η έννοια της *προειδοποίησης Java* ;



> 
> ασφάλεια Τύπος: Το καστ από την Αντικείμενο στη λίστα είναι στην πραγματικότητα τον έλεγχο κατά τη Λίστα τύπο σβημένη
> 
> 
> 


Παίρνω αυτή την προειδοποίηση, όταν προσπαθώ να ρίξει ένα αντικείμενο σε έναν τύπο με γενικές πληροφορίες, όπως τον κωδικό:



```
Object object = getMyList();
List<Integer> list = (List<Integer>) object;

```
 
Ποια είναι η έννοια της προειδοποίησης ασφαλείας που υπάρχουν σε ορισμένα γενόσημα φάρμακα Java ρίχνει;
=======================================================================================================



Η προειδοποίηση αυτή δεν υπάρχει, διότι Java δεν αποθηκεύει στην πραγματικότητα πληροφορίες για τον τύπο κατά το χρόνο εκτέλεσης σε ένα αντικείμενο που χρησιμοποιεί τα γενόσημα φάρμακα. Έτσι, αν `object`είναι στην πραγματικότητα ένα `List<String>`, δεν θα υπάρχει `ClassCastException`κατά το χρόνο εκτέλεσης, εκτός μέχρι ένα σημείο είναι προσβάσιμο από τη λίστα που δεν ταιριάζει με το γενικό τύπο που ορίζεται στη μεταβλητή. 


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


Για να αφαιρέσετε την προειδοποίηση, δοκιμάστε:



```
List<?> list = (List<?>) object;

```

Ωστόσο, σημειώστε ότι δεν θα είναι σε θέση να χρησιμοποιούν ορισμένες μεθόδους, όπως προσθέτουν, επειδή ο compiler δεν ξέρω αν προσπαθείτε να προσθέσετε ένα αντικείμενο από λανθασμένο τύπο. Το παραπάνω θα λειτουργήσει σε πολλές περιπτώσεις, αλλά αν πρέπει να χρησιμοποιήσετε την προσθήκη, ή κάποια παρόμοια περιορισμένο τρόπο, απλώς θα πρέπει να υποστούν την κίτρινη υπογράμμιση στο Eclipse (ή `SuppressWarning`σχολιασμός).

 