11

簡単な質問があります:

なぜ Eclipse は、これら 2 つのインターフェースの実装について大声で叫ぶのでしょうか?

public abstract class Gateway implements IPlayerity, IItemity {
    public interface IPlayerity { ... }
    public interface IItemity { ... }
    // I...ity
}

次のエラー メッセージが表示されます。

IPlayerity をタイプに解決できません

4

4 に答える 4

5

別のファイルでインターフェイスを宣言します。トップレベルのクラスがそれ自体にネストされたインターフェースを実装できないことは明らかです(理由はわかりませんが)。

インターフェイスを同じファイル内に保持する場合は、修飾子を public から default に変更し、クラス定義の後に宣言する必要があります。

于 2011-07-15T18:37:58.503 に答える
5

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
于 2011-07-15T19:02:20.443 に答える
0

これら 2 つのインターフェースはデフォルトの Java インターフェースではありませんよね?そのため、「IPlayerity をタイプに解決できません。」というエラーが表示された場合は、適切なパッケージをまだインポートしているかどうかを確認してください。これについてコメントする必要がありますが、できません。楽しむ。

于 2011-07-15T18:33:38.257 に答える
-1

型として解決できない場合、「見る」ことはできません。インターフェイスのインポートを追加する必要があります。

import package.Gateway.IPlayerity
import package.Gateway.IItemity

それでも、コンパイラが他の奇妙な循環エラーをスローする気がします..

インターフェイスを別のファイルで定義した方がよいでしょう。

于 2011-07-15T18:43:38.020 に答える