|
|
1
4
接口的第二个版本错误。它说
因此,如果您获得
这在您的示例中可能不正确,因为如果您添加另一个类
这是因为
|
|
|
2
3
基本上当你做一个
编译器警告您,它不能确保返回的某个特定定义的子类仅返回一个自身。 编辑:为了更好地解释这一点,b是a的子类,但不需要是a的唯一子类。考虑下面的层次结构。 B扩展了 C延伸A而不是B 现在我有了一个方法:
遵循泛型,它应该编译并保证没有运行时类强制转换异常(这里可能还有其他接口问题,但肯定有一些情况可以用来正确地演示这个问题——我和您的示例保持一致)。 但是如果您将Y的一个实例传递给这个方法呢? 好吧,现在我得到的是B而不是C。编译器警告你这可能发生。 |
|
|
3
1
编译器告诉您的是,无法解析泛型。除了输出,t没有被定义在任何地方-你说的是哪个t?如果接口被生成为T类型:
然后这就可以了,或者如果该方法的值定义了您想要的返回类型:
或
那就没有警告了。 编辑:请参阅Waxwing的文章,了解为什么不应该为这个特定问题使用泛型的解释。我只是在展示仿制药是多么的合适。 |
|
|
4
0
因此,要在阿尔伯托普和伊沙伊的两个答案的基础上,尝试以下方法:
B延伸了A,所以没关系。调用者不需要知道返回的子类是什么,只需要它扩展了a。所以我们开始了:) |