Результаты поиска по запросу "covariance"
Этот вопрос должен был быть комментарием. Я не голосовал против тебя.
a я мог бы сделать это: class MyClass { private List<? extends MyInterface> list; public void setList(List<MyImpl> l) { list = l; } }...при условии, что (MyImpl implements MyInterface) конечно. Что является аналогом для этого вScalaпри ...
Вы не объяснили, почему «ложь достаточно хороша для большинства вызовов этого метода», и вы не объяснили, почему они решили не использовать эту ложь для Array и сделать ее также ковариантной.
мер. Почему val list:List[Any] = List[Int](1,2,3)работать, но val arr:Array[Any] = Array[Int](1,2,3)не удается (потому что массивы являются инвариантами). Каков желаемый эффект этого дизайнерского решения?
Из того, что я могу собрать, ковариантность устраняет необходимость явного понижения рейтинга после предыдущего повышения. Обычно, если вы выгружаете объект, вы можете получить доступ только к методам и атрибутам базового типа, с ковариацией кажется, что вы можете подразумевать понижение, заменяя меньшие производные типы более производными типами в более производном объявлении класса.
разница между ковариацией и апкастингом или, более конкретно, почему им дают разные имена? Я видел следующий пример, называемый «апкастинг»: string s = "hello"; object o = s; //upcast to 'string' to 'object'Принимая во внимание, что следующее, ...
Ты прав; пытаясь упростить мой реальный пример, я допустил тривиальную ошибку :-(
ТИРОВАТЬ: Переписать этот вопрос на основе оригинального ответа scala.collection.immutable.Set класс не является ковариантным по своему параметру типа. Почему это? import scala.collection.immutable._ def foo(s: Set[CharSequence]): Unit = ...
вы вводите неопределенное поведение земли.
ак вернулся как раз вовремя. Я получаю странную ошибку: 'B::blah': overriding virtual function return type differs and is not covariant from 'A::blah'Вот код, вызывающий проблему: class A { public: class Inner { }; virtual Inner blah() = 0; }; ...
Универсальный ковариантный класс
Можно ли заставить следующий код компилироваться в C #? Я компилирую подобное в Java. public interface IInterface { ... } public class Class1 : IInterface { ... } public abstract class Base<T> where T : IInterface { ... } public class Class2<T> ...
приведение Java из списка <B> в список <A>, где B расширяет A
Это возможно? если нет, то почему это невозможно в Java? interface B extends A {} public List<B> getList(); List<A> = getList(); // Type mismatch: cannot convert from List<B> to List<A>Я думаю, что тема, которую я ищу, это "ковариантные типы", ...
Выборочно отключить подсемейство в Scala? (правильно введите List.contains)
List("a").contains(5)Потому чтоInt никогда не может содержаться в спискеString, этодолжен генерировать ошибку во время компиляции, но это не так. Тщательно и бесшумно проверяет каждыйString содержится в списке на равенство5, который никогда не ...
Почему C # / CLR не поддерживает переопределение метода co / противоречия?
Есть довольно много вопросов и ответов о взломе вокруг ограничения C #, не позволяющего типам возврата метода (и аргументу) быть замененными на совместимые типы в переопределениях, ноПочему существует ли это ограничение в компиляторе C # или в ...
Почему я не могу преобразовать словарь одного типа значения в словарь другого типа значения, когда типы значений могут быть преобразованы друг от друга? [Дубликат]
Возможный дубликат: Почему в C # нельзя хранить объект List <string> в переменной List <object> [https://stackoverflow.com/questions/6557/in-c-why-cant-a-liststring-object-be-stored-in-a-listobject-variable] Почему не работает ...