2017-12-18 304 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(); 
    } 
}