2017-12-18 309 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',或者去除'B類''。 –

+0

'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(); 
    } 
}