Не бывает неиспользованного типа. Система типов должна знать тип всех переменных, и если вы объявляете общий тип c с двумя параметрами типа generi c, оба должны иметь тип.
Даже если значение u
равно nil
во время init
, ему все еще нужен конкретный c тип, поскольку Optional
сам по себе является общим c типом, поэтому вам нужно сообщить компилятору, что такое Optional<U>
.
Более того, если вы не сделаете u
неизменяемым, вы не можете гарантировать, что он никогда не будет иметь значения, просто не дав ему значения в init
. (На самом деле вы даете ему значение, оно просто по умолчанию nil
).
Итак, ответ НЕТ, вы не можете создать экземпляр своего GenericClass
, не указав как T
, так и U
.