2017-12-18 15 views
1

私はJavaを初めて使用していますが、このコードを実装しようとしていますが、エラーが発生しています。Javaのインターフェイス内の抽象クラス

B.java

public interface A{ 

    class B; // !!getting error here 

    B f(); // f returns B class 

    } 

C.java

public class C implements A{ 


public class B{ 
    private int a; 
    public void print(){ 
    System.out.println(a); 
    } 

} // end of implementation of class B 

B f(){ 
    System.out.println("default "); 
} 

} // end of class C 

私が間違って何をやっているとどのように私はエラーを取得せずにこのコードを実装することができますか?

+2

可能重複[インタフェース内の内部クラスは](https://stackoverflow.com/questions/2400828/inner-class-within-interface) あなたはあまりにも – GuyKhmel

+0

'クラスBを読んで、より良い;'ではありません有効なJava。そこに 'B'を定義するか、' class B; 'を取り除く必要があります。 –

+0

'class B;'の構文はおそらくC++からですか? C++では、クラスの「前方宣言」を行うことができます。 Javaでは存在しません。 – Brick

答えて

0

Java-Genericsを使用した実装についてはどうですか?

public interface A<T> { 
    T f(); 
} 

このように、インターフェイスにはクラス定義が含まれている必要はありません。実装でクラスを完全に宣言することができます。

public class C implements A<C.B> { 
    public class B { 
     private int a; 
     public void print(){ 
      System.out.println(a); 
     } 
    } 

    @Override 
    public B f() { 
     return new B(); 
    } 
} 
関連する問題