Mógłbym powiedzieć kilka dobrych rzeczy na temat leków generycznych, ale to nie było pytanie. Mógłbym narzekać, że nie są one dostępne w czasie wykonywania i nie działają z tablicami, ale zostało to wspomniane.
Duża irytacja psychologiczna: czasami wpadam w sytuacje, w których nie można zmusić leków generycznych do działania. (Tablice są najprostszym przykładem.) I nie mogę zrozumieć, czy leki generyczne nie są w stanie wykonać tej pracy, czy też jestem po prostu głupi. Nienawidzę tego. Coś w rodzaju leków generycznych powinno zawsze działać. Za każdym razem, gdy nie mogę robić tego, co chcę, używając języka Java, wiem, że problem to ja i wiem, że jeśli będę dalej naciskać, w końcu tam dotrę. W przypadku leków generycznych, jeśli stanę się zbyt wytrwały, mogę zmarnować dużo czasu.
Ale prawdziwym problemem jest to, że leki generyczne dodają zbyt dużej złożoności dla zbyt małego zysku. W najprostszych przypadkach może mnie to powstrzymać od dodania jabłka do listy zawierającej samochody. W porządku. Ale bez generyków ten błąd spowodowałby, że ClassCastException byłby bardzo szybki w czasie wykonywania, bez marnowania czasu. Jeśli dodam samochód z fotelikiem dziecięcym z dzieckiem, czy potrzebuję ostrzeżenia podczas kompilacji, że lista dotyczy tylko samochodów z fotelikami dziecięcymi, które zawierają szympansy dziecięce? Lista prostych instancji Object zaczyna wyglądać na dobry pomysł.
Kod ogólny może zawierać wiele słów i znaków, a także zajmować dużo miejsca i czytać. Mogę spędzić dużo czasu, żeby cały ten dodatkowy kod działał poprawnie. Kiedy tak się dzieje, czuję się niesamowicie sprytny. Zmarnowałem też kilka godzin lub więcej własnego czasu i muszę się zastanawiać, czy ktokolwiek kiedykolwiek będzie w stanie znaleźć kod. Chciałbym móc przekazać to na utrzymanie osobom, które są mniej inteligentne ode mnie lub mają mniej czasu do stracenia.
Z drugiej strony (trochę się tam skończyłem i czuję potrzebę zapewnienia równowagi), miło jest, gdy używa się prostych kolekcji i map do dodawania, wstawiania i sprawdzania podczas pisania i zwykle nie dodaje dużo złożoność kodu ( jeśli ktoś inny napisze kolekcję lub mapę) . I Java jest w tym lepsza niż C #. Wygląda na to, że żadna z kolekcji C #, której chcę używać, nie obsługuje generycznych. (Przyznaję, że mam dziwne upodobania w kolekcjach).