让我们从一个代码示例开始,理想情况下,我希望可以这样做。Java泛型,在C <T extends MyClass <Z>>中,方法应返回Z
由于MyOtherClass是一个通用的
class MyOtherClass<Z>{}
我想获得的MyOtherClass
class C<T extends MyOtherClass<Z>> {
Z myTypeOfReturnMethod() { return doStuff(); }
}
在Z不幸的是,据我知道,我不能指定,唯一有效的语法会be
class C<T extends MyOtherClass> {
???MyOtherClass.Z??? myTypeOfReturnMethod() { return doStuff(); }
}
这样做的最好方法是什么? C可能有两种泛型,但它是重复性和容易出错的。
我不明白为什么这会是多余的。 – shmosel
@shmosel调整公式并增加了一些信息;) – Vogel612
仍然不认为它是非常多余的。我不会推荐'?扩展Z',除非明确指出'Z'是(仅)生产者,按[PECS](http://stackoverflow.com/questions/2723397/what-is-pecs-producer-extends-consumer-super)。 – shmosel