我这样做是作为Java教程的一部分,所以它可能不是很难回答 - 但我很困难,所以感谢您的帮助!
我有以下问题:我有一个接口a和一个我作为教程的一部分下载的库,它采用类型为a的(实现的)接口并在GUI中显示它。麻烦的是它没有编译;日食说我必须施展它。当我这样做时,它会编译,但会给我一个投射错误。
奇怪的是两个接口都有完全相同的代码。事实上,我复制并粘贴了我的库,但它仍然不起作用。
两个接口如何具有相同的代码却无法投射?我的界面实现有什么问题?
如果您需要任何其他信息,请告诉我!
答案 0 :(得分:8)
无论两个不相关的接口的定义是否相同,都无法在两个不相关的接口之间进行转换。语言根本不允许这样做。两个不同的接口声明,即使它们相同,也会产生两个不同的接口。
您需要更改设计,以便只有一个接口,并且接口的所有客户端和实现者都指向同一个接口。
答案 1 :(得分:0)
其中一个是标准界面吗?你应该让其中一个extend
成为另一个。
您可能不应该创建第二个相同的界面,而只是使用您班级中的现有界面。
答案 2 :(得分:0)
类型转换只是意味着将一种类型的对象引用转换为另一种类型的对象引用。源和目标必须通过继承关联才能进行向上转换或向下转换。这意味着,这两个类应该与子类 - 超类关系相关,或者特定接口应该扩展接口以便转换为它。
http://www.informit.com/articles/article.aspx?p=30871&seqNum=5