2017-12-18 26 views
1

자바를 처음 사용하고이 코드를 구현하려고하지만 오류가 발생합니다.자바의 인터페이스 내부 추상 클래스

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를 읽을 나은, '아니다 유효한 자바. 거기에서'B'를 정의하거나'클래스 B '를 제거해야합니다. –

+0

그'class B; '구문은 어쩌면 C++에서 온 것입니까? C++에서는 클래스의 "전달 선언"을 수행 할 수 있습니다. 자바에서는 존재하지 않습니다. – 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(); 
    } 
}