covariant相关内容

“无效的协变返回类型"嵌套类中的错误,方法返回基于模板的对象

以下 C++ 代码在编译时给了我这些错误: covariant.cpp:32:22: 错误:‘virtual Q 的协变返回类型无效C::test()'covariant.cpp:22:22: 错误:覆盖“虚拟 QB::test()’ 我不想更改行 virtual Qtest() {} 到 virtual Qtest() {} 虽然它消除了编译错误.有没有其他方法可以解决这个问题? ..
发布时间:2022-01-07 13:26:39 C/C++开发

Java协变数组不好?

有几个人告诉我 Java 允许协变数组子类型化,换句话说,如果 A 是 B 的子类型,则 A[] 是 B[] 的子类型,但这是一个糟糕的特性,因为它可以导致运行时错误.有人能给我一个具体的例子来说明它是如何导致运行时错误的,以及 Java 是否/如何解决这个问题? 解决方案 很简单. String strings[] = {"Broken","Type", "system"};对象对象[ ..
发布时间:2021-11-18 04:31:31 Java开发

C++ 中的协变返回类型究竟是什么?

当我尝试执行此操作时出现编译错误: A 类{虚拟 std::vectortest() {/* 做某事 */};}B类:公共A{虚拟 std::vectortest() {/* 做某事 */};} 我假设 A 和 B 是协变类型,因此 A* 和 B* 也应该是(正确的?)通过推断,我本来希望 std::vector 和 std::vector 也应该是协变的,但情况似乎并非如此.为什么? ..
发布时间:2021-09-17 19:10:59 C/C++开发

协变量返回类型

$ 10.3/5 "重写的返回类型功能应与覆盖的返回类型函数或与类协变功能.如果函数D :: f覆盖函数B :: f,返回函数类型是协变的如果他们满足以下条件准则: -都是指向的指针类或对class98的引用) -B :: f的返回类型中的类与返回D :: f的类型,或者是明确易懂的直接或该类中的间接基类D :: f 的返回类型 — 两个指针或引用都具有相同的简历资格和D : ..
发布时间:2021-04-19 19:33:32 C/C++开发

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 ..
发布时间:2020-07-20 19:24:57 Java开发

Kotlin泛型:违反直觉的类型推断和out关键字检查

我最近一直在学习Kotlin,同时对协变类型有一些疑问. 示例代码在这里. 我有Option和Option2都具有类型参数T和扩展名run. 我可以理解validation()中的前两个run,因为它们表现为Java. 但是为什么第三行会编译呢? Option在T中是不变.我们不能将Option实例传递到期望Option的地方. 在为T添加out关键字之后,现在 ..
发布时间:2020-04-26 12:43:36 其他开发

为什么在java方法重写允许有协变返回类型,而不是协变参数?

例如,我有一个Processor基类,其方法返回一个Object并将Object作为参数。我想扩展它并创建一个StringProcessor,它将返回String并将String作为参数。但是, 协变类型仅允许返回值,但不允许参数。这种限制的原因是什么? class Processor { 对象进程(对象输入){ //创建输入的副本,修改它并返回它 返回副本; } } 类St ..
发布时间:2018-12-17 11:07:31 Java开发

为什么Java 5+ API不利用协变返回类型?

从Java 5开始,我们可以协变返回类型。为什么Java API没有利用这个? 以 Graphics2D.create()为例。为什么不重写返回 Graphics2D 对象?在我看来,它在所有情况下都是向后兼容的。 解决方案 一般来说,这确实是为了保持向后兼容性。请注意,兼容性也必须保持在字节码级别,并且更改返回类型会更改字节码。所以一般来说,如果有任何子类可能覆盖了有问题的方法,切 ..
发布时间:2018-12-11 23:29:16 Java开发

Scala匿名函数genric方差问题

我正在学习Scala,我很难理解反向变量,协变量,不变性等。从为什么这个例子没有编译,又如何(合作,反对和in)差异工作?我已经学会了如何将函数视为另一个函数的子类型。 (真的很有用!) 下面的代码是我认为解决我的难题的重要部分。我提取了一些我认为会给问题增加不必要的复杂性的部分。根据示例,我有一个Student对象,它将充当工厂来生成函数。 函数将采用AnyVal的类型或子类型(In ..
发布时间:2018-04-23 14:41:27 其他开发