jjzjj

covariant

全部标签

java - 为什么在 java 方法重写中允许具有协变返回类型,但不允许协变参数?

例如,我有一个Processor基类,其方法返回一个Object并将Object作为参数。我想扩展它并创建一个StringProcessor,它将返回String并将String作为参数。然而协变类型只允许返回值,而不是参数。这种限制的原因是什么?classProcessor{Objectprocess(Objectinput){//createacopyofinput,modifyitandreturnitreturncopy;}}classStringProcessorextendsProcessor{@OverrideStringprocess(Stringinput){//pe

协方差(Covariance)

协方差1.协方差1.1相关性1.2计算协方差1.3协方差与相关性1.4协方差能让我们知道些什么信息?1.5协方差无法让我们知道哪些信息?1.协方差笔记来源:Covariance,ClearlyExplained!!!在概率论与统计学中用于衡量两个随机变量的联合变化程度协方差衡量的是一个变量的变化会如何影响另一个变量的变化,测量的是两个变量之间的线性相关程度1.1相关性以细胞中的基因X和基因Y的数量为例,下面给出了5个细胞中,每个细胞分别含有的基因X和基因Y的数量,我们计算出了这5个细胞含基因X数量的样本均值xˉ\bar{x}xˉ和含基因Y数量的样本均值yˉ\bar{y}yˉ​,我们观察这细胞中

Java协变返回类型

为什么下面的代码打印“1”?classA{intx=1;}classBextendsA{intx=2;}classBase{AgetObject(){System.out.println("Base");returnnewB();}}publicclassCovariantReturnextendsBase{BgetObject(){System.out.println("CovariantReturn");returnnewB();}/***@paramargs*/publicstaticvoidmain(String[]args){Basetest=newCovariantRetu

java - 接口(interface)中的协变返回类型未通过 Javac 编译

我有以下结构:publicinterfaceBarReturn{}publicinterfaceFooReturn{}publicinterfaceFooBarReturnextendsFooReturn,BarReturn{}publicinterfaceFoo{FooReturnfooBar();}publicinterfaceBar{BarReturnfooBar();}publicinterfaceFooBarextendsFoo,Bar{FooBarReturnfooBar();}Javac失败并显示以下消息:FooBar.java:2:typesBarandFooarein

c++ - 设计建议——返回子类时避免 "invalid covariant return type"

我有以下情况:我指定一个纯虚函数:虚拟PredictedMatchPredictMatch(constMatch&match)const=0;我还有:类ImpactPredictedMatch:publicPredictedMatch现在,我想做的是:ImpactPredictedMatchPredictMatch(constMatch&match)const;在一个实现了之前的纯虚函数的类中。我原以为编译器会根据需要简单地转换返回的类型,但我得到:impact_predictor.h:18:24:错误:“虚拟ImpactPredictedMatchImpactPredictor::P

c++ - 嵌套类中的 "Invalid covariant return type"错误,其方法返回基于模板的对象

下面的C++代码在编译时给我这些错误:covariant.cpp:32:22:error:invalidcovariantreturntypefor‘virtualQC::test()’covariant.cpp:22:22:error:overriding‘virtualQB::test()’我不想更改行virtualQtest(){}至virtualQtest(){}尽管它消除了编译错误。有没有其他方法可以解决这个问题?templateclassQ{public:Q(){}virtual~Q(){}};classA{public:A(){}virtual~A(){}};classB

【风格迁移-论文笔记12.20】Arbitrary style transfer based on Attention and Covariance-Matching

文章目录前言一、背景介绍二、相关工作三、方法论四、实验五、评价指标总结前言任意风格迁移(Arbitrarystyletransfer)具有广阔的应用前景和重要的研究价值,是计算机视觉领域的研究热点。许多研究表明,任意风格迁移取得了显着的成功。然而,现有的方法可能会产生伪影(artifacts),有时会导致内容结构的失真(distortion)。为此,本文提出一种新颖的模块,名为Attention-wiseandCovariance-MatchingModule(ACMM),可以在没有伪影的情况下更好地保存内容结构。一、背景介绍任意风格迁移(Arbitrarystyletransfer)的主要任

c++ - 虚函数的不同返回类型

虚函数的返回类型应该与基类中的类型相同,或者是协变的。但是为什么我们有这个限制呢? 最佳答案 因为随之而来的废话:structfoo{virtualintget()const{return0;}};structbar:foo{std::stringget()const{return"thiscertainlyisn'tanint";}};intmain(){barb;foo*f=&b;intresult=f->get();//int,right?...right?}让派生类返回完全不相关的东西是不明智的。

java - scala中的Covariant Typeparameter需要在java接口(interface)中不变

我有一个看起来像这样的特征(一些进一步的信息可以在thisrelatedquestionbymyself找到,虽然我不认为,这个问题需要它)traitExtractor[-A,+B]{defextract(d:A):B//lotsofotherthings}要在现有的java框架中使用它,我希望这个Extractor有一个返回Comparator[B]的函数(即java.util.Comparator),甚至更好地扩展Comparator[A]。现在这带来了一个问题,因为Comparator的类型参数应该是不变的,而A是逆变的而B是协变的。所以我得到这样的错误:scala>import

C# : Is Variance (Covariance/Contravariance) another word for Polymorphism?

我试图从网上的几篇文章和StackOverflow上的问题中找出Covariance和Contravariance这两个词的确切含义,据我所知,这只是多态性的另一种说法。我上面的说法正确吗?还是我听错了? 最佳答案 肯定和多态有关。不过,我不会说它们只是多态性的“另一个词”——它们是关于非常具体的情况,在这种情况下,您可以将一种类型视为另一种类型在特定上下文中。例如,使用正常的多态性,您可以处理对Banana的任何引用作为对Fruit的引用-但这并不意味着您可以替代Fruit每次当您看到Banana类型时.例如,List不能被视为L
12