我有一個簡單的問題:擴展內部接口?
爲什麼Eclipse尖叫實現這兩個接口?
public abstract class Gateway implements IPlayerity, IItemity {
public interface IPlayerity { ... }
public interface IItemity { ... }
// I...ity
}
我收到此錯誤信息:
IPlayerity不能被解析爲一個類型
我有一個簡單的問題:擴展內部接口?
爲什麼Eclipse尖叫實現這兩個接口?
public abstract class Gateway implements IPlayerity, IItemity {
public interface IPlayerity { ... }
public interface IItemity { ... }
// I...ity
}
我收到此錯誤信息:
IPlayerity不能被解析爲一個類型
由於JLS的工作方式(儘管我不確定JLS中的位置在哪裏),您有循環依賴關係無法解決。
接口IPlayerity和IItemity對於NestedInterfaces類頭定義不可見,因爲它們在裏面。我可以通過改變你的程序
public class NestedInterfaces implements
NestedInterfaces.IPlayerity, NestedInterfaces.IItemity
{
public interface IPlayerity {}
public interface IItemity {}
}
解決這個問題,但隨後的Eclipse給了我這個錯誤,這是更爲明確:
Multiple markers at this line
- Cycle detected: the type NestedInterfaces cannot extend/implement itself or one of its own member types
- Cycle detected: the type NestedInterfaces cannot extend/implement itself or one of its own member types
那麼我們如何解決「週期檢測」問題呢? – Pacerier
週期檢測通過定義實現它的類之外的接口來解決。 –
我看到這兩個接口是不是默認的Java接口,對不對?因此,如果出現錯誤「IPlayerity無法解析爲某種類型」,請檢查是否導入了正確的軟件包。我應該對此發表評論,但我只是不能。玩的開心。
聲明另一個文件中的接口。它對我來說很明顯,頂層類不能實現嵌套在其內部的接口(儘管我不知道爲什麼)。
如果要將接口保留在同一個文件中,則必須將修飾符從public更改爲default,並在類定義之後聲明它們。
我*認爲*原因是類加載如何工作。對其他類的普通引用會被懶惰地加載,但是在加載類之前會自動加載外部類,超類和已實現的接口。當你的外部類實現了一個內部接口並且該結構將是有效的,那麼當你在運行時加載類時,你會在類加載器中得到一個StackOverflowError ... – mihi
如果它不能被解析爲類型,那麼它不能被「看到」。您應該添加一個導入的接口:
import package.Gateway.IPlayerity
import package.Gateway.IItemity
的是,我有一種感覺,那麼編譯器將會拋出其他一些奇怪的循環錯誤..
它的更好,如果你在另一個文件中定義的接口。
是的,仍然是循環錯誤。 – sulai
你什麼錯誤? –
@jason IPlayerity無法解析爲類型。 – imacake