Αν αρχίσεις να γράφεις κώδικα που χρησιμοποιεί reflection θα δεις ότι δεν θα ξέρεις τίποτα για καμία κλάση και για να το κάνεις να δουλεύει θα χρειαστεί δυναμικούς ελέγχους (δηλαδή κατά την διάρκεια της εκτέλεσης του προγράμματος) και typecasting για να μπορέσεις τελικά να χρησιμοποιήσεις τα αντικείμενα που κατασκεύασες.
Αυτό έχει τρία προβλήματα που μπορώ να σκεφτώ αυτή την στιγμή:
Η εκτέλεση του κώδικα είναι πιο αργή.
Γράφεις επιπλέον ελέγχους που θα μπορούσαν να γίνουν κατά την μεταγλώττιση.
Ο κώδικας είναι unsafe, δηλαδή πλέον ο μεταγλωττιστής δεν μπορεί να ελέγξει αν το πρόγραμμα είναι σωστό. Όσα περισσότερα τέτοια χαρακτηριστικά βάλεις στο πρόγραμμά σου τόσο δυσκολότερο είναι να είσαι σίγουρος ότι αυτά που γράφεις θα τρέξουν σωστά. Ένας λόγος που υπάρχουν τύποι σε γλώσσες είναι να πιάσουν τα "εύκολα" λάθη που κάνει ο προγραμματιστής.