ИИ для программиста?
Вася точно таким же образом может забыть унаследоваться от вашего интерфейса. Мы уже про ваш интерфейс перетёрли, что он также не гарантирует, что придёт левый тип, реализующий этот интерфейс. Т.е. внутри всё равно надо проверять на разрешённые типы.
Вобщем, всё сводится к тому, что что-то где-то должно Васе напоминать, иначе Вася точно когда-нибудь ошибётся. В идеале надо, чтобы в каком-то одном месте был один раз добавлен разрешённый тип, и далее все проверки проходили автоматически и желательно до выполнения программы. При этом это место должно быть максимально простым и понятным. Я вобщем-то всего, чего нужно добился просто перегрузкой методов, кроме последнего - "до выполнения программы". Ваш интерфейс решает эту проблему, но усугубляет все остальные.
При этом требование "до выполнения" может быть ослаблено или убрано, если есть тесты, которые собственно и выполняют код, но делают это не в продакшене, а когда не критично.