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