我如何实例化?包含代码

2024-03-24

编译器不允许我将 保留在最后一行,我不明白为什么。

如何编译这样一个通用结构?

我尝试将代码更改为:

 X a = new A<X,Y>(); // "Type mismatch: cannot convert from A<X,Y> to X" 
 Y b = new B<X,Y>(); // "Type mismatch: cannot convert from B<X,Y> to Y" 

 W<X,Y> s = new M<X,Y>(a,b); // no error

我有点迷失 - 请帮忙!


的构造函数M< X, Y >期望收到X and a Y,但你想给它一个IA< X, Y > and an IB< X, Y >。必要的关系颠倒了;X is an IA< X, Y >,但反之则不然,同样对于Y.

以下内容可以编译,但对于您所追求的内容来说似乎限制不够:

class A<X extends IA<X,Y>, Y extends IB<X,Y>> implements IA<X,Y>{}
class B<X extends IA<X,Y>, Y extends IB<X,Y>> implements IB<X,Y>{}
interface IA<X extends IA<X,Y>, Y extends IB<X,Y>> {}
interface IB<X extends IA<X,Y>, Y extends IB<X,Y>> {}

class M<X extends IA<X,Y>, Y extends IB<X,Y>> extends W<X,Y>{
    public M(IA<X,Y> x, IB<X,Y> y){} // this is the only change
}

class W<X extends IA<X,Y>, Y extends IB<X,Y>> {}


//To my check class code:

public <X extends IA<X,Y>, Y extends IB<X,Y>> void check() {
    IA<X,Y> a = new A<X,Y>();
    IB<X,Y> b = new B<X,Y>();

    W<X,Y> s = new M<X,Y>(a,b);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何实例化?包含代码 的相关文章

随机推荐