0
嘗試將接口實現強制轉換爲接口時遇到意外錯誤(「不可轉換類型」)。使用接口實現時的「不可轉換類型」
我給出如下界面
public interface IAbc {...}
和下面的方法在另一類
public class SomeClass {
public doSomething(Iterable<IAbc> abcs) {...}
}
我寫了下面的類
public class MyAbc implements IAbc {...}
我有其他類似方法
public class MyClass {
public Iterable<MyAbc> getMyAbcs() {...}
}
我希望我能如下很好地鏈接這些了:
public void doSomethingWithThings(SomeClass sc, MyClass mc) {
sc.doSomething(mc.getMyAbcs());
}
但NetBeans的是給我下面的錯誤:
error: inconvertible types
sc.doSomething(mc.getMyAbcs());
required: Iterable
found: Iterable
我嘗試鑄造,但Iterable<IAbc> abc = (Iterable<IAbc>)mc.getMyAbcs();
導致相同的錯誤。
如何將接口實現的Iterable接口傳遞給期望接口Iterable的方法?
不幸的是,這不是一個選項(我不能改變'SomeClass'或'IAbc')。 – yoozer8 2013-03-05 16:00:50
@Jim然後你需要在調用函數之前手動將它轉換爲'Iterable',並將'Iterable '傳遞給它。或者只是嚴格使用'Iterable ',讓類中的方法返回'Iterable ' –
Esailija
2013-03-05 16:01:51
@Jim你還應該通知api的作者使用正確的有界通配符使它像預期的那樣工作:P – Esailija 2013-03-05 16:15:32