Описание тега covariant

2 ответа

Почему в java-методе переопределение позволяет иметь ковариантные возвращаемые типы, а не ковариантные параметры?

Например, у меня есть базовый класс Processor с методом, который возвращает Object и принимает Object в качестве параметра. Я хочу расширить его и создать StringProcessor, который будет возвращать String и принимать String в качестве параметра. Одна…
21 окт '17 в 09:19
3 ответа

C++ ковариантная ошибка возвращаемого типа с множественным наследованием

У меня есть код, который эквивалентен этому: class X {}; class Y {}; template< typename T> class C { public: virtual T * foo() = 0; }; class A : public C< X> { public: X * foo() {}; }; class B : public A {}; class D : public B, public C&…
24 фев '15 в 13:20
1 ответ

Принцип подстановки Лискова и инвариантность массивов

Принцип подстановки Лискова говорит нам, что если A является подтипом B, то все, что мы можем сделать с типом B, мы должны иметь возможность делать с типом A. Итак, чтобы исследовать это дальше, я создаю следующее: class Animal class Dog extends Ani…
18 апр '13 в 21:51
1 ответ

Почему универсальный тип не работает с Inheritance в scala?

Итак, вот код: package week4 object expr { abstract class Expr[T] { def eval:T = this match { case Number(x) => x case Sum(e1, e2) => e1.eval + e2.eval } def show: String = this match { case Number(x) => "" + x case Sum(e1, e2) => "(" + …
22 июл '16 в 14:00
1 ответ

C++ контейнеры, ковариация и шаблон

У меня есть некоторые проблемы, чтобы найти соответствующее решение моей проблемы. Я должен вернуть некоторые данные из класса, и тип данных зависит от класса. Моим первым решением было следующее: class Base { virtual QVector<Data*> getData() …
29 мар '17 в 15:16
3 ответа

Как реализовано переопределение ковариантного метода с использованием метода моста в Java

Читая Covariant Overriding, я обнаружил очень странный факт, Переопределение ковариантного метода реализовано с использованием метода моста. он также сказал, что эта функция реализована в java5 и выше (я думаю, это потому, что дженерики введены из j…
06 сен '13 в 10:24
3 ответа

Ковариантные возвращаемые типы в перечислениях Java

Как уже упоминалось в другом вопросе на этом сайте, что-то подобное не является законным: public enum MyEnum { FOO { public Integer doSomething() { return (Integer) super.doSomething(); } }, BAR { public String doSomething() { return (String) super.…
10 ноя '12 в 10:23
4 ответа

Какие накладные расходы ожидают без ввода-вывода

Одним из недостатков асинхронного шаблона в C# 5 является то, что задачи не являются ковариантными, т.е. ITask<out TResult> Я заметил, что мои разработчики часто делают return await SomeAsyncMethod(); чтобы обойти это. Какое влияние окажет на …
19 авг '15 в 12:56
3 ответа

Java-ковариантный тип возвращаемого значения

Почему ниже код печатает "1"? class A { int x = 1; } class B extends A { int x = 2; } class Base { A getObject() { System.out.println("Base"); return new B(); } } public class CovariantReturn extends Base { B getObject() { System.out.println("Covari…
26 май '11 в 10:36
1 ответ

Тип возврата метода содержит определение подкласса

Я пришел с кодом, который использует синтаксис, подобный этому: public <A extends B> double[][] foo(C arg) { .... } Я получаю пару вопросов, просматривая его. а) тип возвращаемого значения foo(C arg) является <A extends B> double[][]? Чт…
02 май '14 в 09:55
3 ответа

Недопустимый ковариантный тип с клонируемым классом CRTP

Я пытаюсь реализовать класс Clonable с CRTP. Однако мне нужно иметь абстрактный класс, который имеет чисто виртуальный метод клонирования, переопределенный дочерними классами. Чтобы это произошло, мне нужна функция clone для возврата ковариантного в…
1 ответ

Почему Scala List может принимать ковариантный тип в качестве параметра в методе +=

Scala List объявлен как sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with Product with GenericTraversableTemplate[A, List] with LinearSeqOptimized[A, List[A]] with java.io.Serializable Метод для добавления элемента в списо…
12 дек '15 в 10:15
2 ответа

Интерфейсы, обобщения и ковариантные типы возвращаемых данных

Предположим, у меня есть интерфейс следующим образом: public interface Foo<T> { T doSomething(); } Теперь разрешены оба следующих варианта? public class Bar implements Foo<Number> { ... } public class Bar2 extends Bar implements Foo<I…
24 ноя '14 в 06:25
1 ответ

Почему бы не установить ковариант по умолчанию при определении подтипа в Scala?

Это значит определить trait Option[T] такой же как trait Option[+T], Это легко рассмотреть val humanOpt: Option[Human] может указать на Option[Student] например, как val humanOpt: Human может указать на Student пример. Может быть, это кажется странн…
24 ноя '17 в 02:38
0 ответов

Назначение фиктивных функций для `import *` с помощью flowjs

Скажем, у меня есть следующий код: export const exampleFunc = () => {} Который затем используется в тесте так: import * as exampleAll from '../../path/to/example' describe('Example', () => { exampleAll.exampleFunc = jest.fn() }) Это не может б…
13 мар '18 в 19:10
0 ответов

Переопределение, массивы, коварианты и инициализаторы

Я попытался объединить в одной программе некоторые понятия в OOPS, которые на первый взгляд кажутся взаимосвязанными и запутанными. Если вы можете добавить к этому, было бы здорово. Любые указатели или предложения по запоминанию этих концепций также…
1 ответ

C++ переопределяет переменную-член (std::vector)

Вот классы, о которых мой вопрос class Graph {} class SceneGraph : public Graph {} class Node { public: virtual Node* getNode(int index) { return mNodeList[index]; } protected: vector<Node*> mNodeList; Graph* mGraph; } class TransformationNode…
14 янв '12 в 23:49
0 ответов

Ко-изменяет в ANOVA с использованием SPSS

Я сделал повторные измерения ANOVA в SPSS. Я хотел бы знать, правильно ли размещать каждый ковариат, один за другим, в поле "ковариабельные переменные" для контроля возможных зависимых переменных, которые изменяют статистическую значимость ANOVA. Сп…
12 авг '18 в 12:19
0 ответов

Ковариант (выход) и общий тип котлин

В Java я могу сделать это: interface BaseInterface {} interface ExtendsInterface extends BaseInterface {} public interface ProblemInterface<E extends BaseInterface> { void method(E baseInterface); } class Main { public static void main (String…
13 июн '18 в 09:57
2 ответа

Общая ковариантная ошибка в C#

Ниже мой код, я не знаю, почему DateTime не может изменить на Object, есть идеи, чтобы решить эту проблему? public class Test { public DateTime CreatedTime { get; set; } } public class Test1 { } public class Test2 : Test1 { } static void Main(string…
12 окт '10 в 03:11