Αυτό από μόνο του δεν αρκεί για να παράγει compilation error.
Ο compiler απλά θα παράγει warning. Το νόημα των generics και των τύπων είναι να σε περιορίσει ως προς τους τύπους δεδομένων μιας κλάσης και να σε προστατέψει από λάθος type casting.
http://docs.oracle.com/javase/1.5.0/docs/guide/language/generics.html
Φυσικά κατ αυτό τον τρόπο ο παραπάνω κώδικας μπορεί να προκαλέσει runtime error αν εσύ προσπαθήσεις να βάλεις ένα μη Item στην κλάση.