-
Предполагая
класс A {}
класс B: A {}
ковариация не поддерживается для общего класса.
Значение - мы не можем сделать что-то вроде этого:
MyConverter<B> x1= new MyConverter<B>();
MyConverter<A> x2= x1;
Это прекрасно и понятно.
Из моего чтения - я понимаю, что Ковариация будет доступна:
"Если вы используете встроенный универсальный интерфейс, реализуемый в Generic Class, так что доступ к экземпляру объекта типа T будет доступен через эти интерфейсы".
У меня есть только одна проблема.
Я видел много примеров класса "конвертер" как форма Stack
.
Но никогда не понимал "что, если я хочу использовать только 1 экземпляр B из ссылки A?"
поэтому Ive попробовал код:
Создать
B
объект + значения --- > использовать Generic Converter дляB
--- > используйте ковариационный поток, чтобы получить его ссылкуA
--- > теперь вы можете использовать его либо как A, либо как B.
Мой вопрос:
Это правильный способ сделать это (для использования ковариации только для одного объекта)?
p.s. Код работает и скомпилирован в порядке. http://i.stack.imgur.com/PJ6QO.png
В последнее время я много просил/читал об этой теме - я погружаюсь в вещи, чтобы понять их, насколько я могу.