Конечно, если вам нужен синглтон, вы должны заранее знать, какими будут точные типы, упомянутые в этом единственном экземпляре.
Возможно, если вы добавите больше деталей к своему примеру, это больше не будет правдой, но, насколько я понимаю, вам здесь не нужны дженерики. Если вы хотите выразить, что поля, которые вы храните Sprites
и Bodies
, могут быть любым подклассом этих классов, просто объявите эти поля с этими типами, остальное позаботится о наследовании.
Просто подумайте о названии: «дженерики», оно должно использоваться для чего-то, что будет снова и снова использоваться в разных контекстах. Как класс, определяющий древовидную структуру, которая может содержать любой класс объектов. Иногда трудно сказать, нужны ли вам дженерики или нет. Но синглтон определенно является полярной противоположностью; нет ничего менее универсального, чем синглтон: один класс, один экземпляр.
Ps: Однако есть Enum
s, которые являются универсальными и имеют фиксированное число экземпляров, самосвязанные универсальные типы являются решением для этих случаев, но я почти уверен, что вы мне это не нужно.