Вы выполняете непроверенное приведение на
T instance = (T)getInstance(i);
Если вы пропустите приведение, вы получите ошибку во время компиляции.Если вы добавите приведение, вы получите предупреждение, но предполагается, что вы знаете, что делаете.
В этом случае вы «не знаете, что делаете», т.е.Вы говорите: «Черт возьми систему типов!».Тогда все ставки отменены, и во время компиляции невозможно убедиться, что вы делаете правильные вещи.Во время выполнения вы можете получить исключения.
GhostCat упоминал о проверенных типах коллекциях.Вам не нужно реализовывать свои собственные классы для них, поскольку служебный класс Collections
содержит методы для создания проверенных коллекций checkedList
, checkedSet
и т. Д. Они содержат дополнительный аргумент Class
, который используется для проверки того, что содержимоеправильного типа.Используя их, вы получите исключение времени выполнения раньше, когда помещаете элементы в коллекцию, а не извлекаете их.