43得票3回答
协变的泛型参数

我正在尝试理解这个问题,但是在搜索中没有找到合适的结果。在C# 4中,我可以这样做: public interface IFoo<out T> { } 这个有什么不同之处? public interface IFoo<T> { ...

37得票2回答
为什么Resharper在这段代码中会提示"从string[]到object[]的协变数组转换可能会导致写操作时的运行时异常"?

这段代码:comboBoxMonth.Items.AddRange(UsageRptConstsAndUtils.months.ToArray()); public static List<String> months = new List<String> { ...

10得票4回答
虚函数的返回类型不同

虚函数的返回类型应该与基类中的类型相同,或者是协变的。但是我们为什么要有这个限制呢?

10得票2回答
为什么Java 5+的API没有利用协变返回类型?

自从Java 5开始,我们被允许拥有协变返回类型。为什么Java API没有利用这一点呢? 以Graphics2D.create()为例。为什么它没有被重写以返回一个Graphics2D对象?在我看来,它在所有情况下都是向后兼容的。

9得票6回答
接口中的协变返回类型在使用Javac编译时无法通过。

我有以下结构: public interface BarReturn {} public interface FooReturn {} public interface FooBarReturn extends FooReturn, BarReturn {} public interfac...

9得票2回答
为什么在Java中方法覆盖允许具有协变返回类型,但不允许具有协变参数?

例如,我有一个处理器基类,其中有一个返回对象并以对象为参数的方法。我想扩展它并创建一个 StringProcessor,它将返回字符串并以字符串为参数。然而,协变类型仅允许在返回值上,而不是参数上。这样的限制是什么原因? class Processor { Object proces...

9得票3回答
嵌套类中返回模板对象的方法出现“协变返回类型无效”的错误

以下C++代码在编译时出现以下错误: covariant.cpp:32:22: error: invalid covariant return type for ‘virtual Q<B> C::test()’ covariant.cpp:22:22: error: over...

8得票3回答
Java协变返回类型

为什么下面的代码会输出“1”? class A { int x = 1; } class B extends A { int x = 2; } class Base { A getObject() { System.out.println("Ba...

8得票3回答
什么是将对象转换为其子类的适当OO方法(协变返回类型)?

我有一个子类需要返回其父类返回类型的子类。我相信这被称为协变返回类型。我想知道从父类转换为子类的最简单方法。 class A { } class B extends A { function bar() { } } class Car { function foo() { ...

8得票3回答
使用CRTP可克隆类时出现无效的共变类型

我正在尝试使用CRTP实现一个可克隆的类。然而,我需要有一个抽象类,该类具有由子类重写的纯虚拟克隆方法。为了实现这一点,我需要让克隆函数返回协变返回类型。我编写了下面的代码,但编译器报错: main.cpp:12:5: error: return type of virtual functi...