나는 class fromal parameters에 대해 읽었으며 다음 코드가 왜 잘못 작성되었는지에 대한 질문이 제기됩니까?Java의 내부 클래스 구성
클래스 A
:
package org.gradle;
public class A extends B.Inner{
public A(B s){
s.super(new B()); //error
s.super(); //OK
}
}
클래스 B
:
package org.gradle;
public class B{
public class Inner{
}
}
무슨 말을했는지의 핵심 부분은 다음과 같습니다
암시 적으로 비 개인 내부 멤버 클래스의 생성자 은 첫 번째 형식 매개 변수로을 나타내는 변수를 선언합니다.
Inner(B b);
왜 즉시 클래스
지금의 인스턴스를 둘러싸는, 나는 기본 생성자 외에, 우리는 다음과 같은 서명 생성자가 있어야 것으로 기대?
고맙지 만, 왜 내가 명백하게 다음과 같이 그 생성자를 호출 할 수 없는지 명확하지 않습니다. http://ideone.com/igXgCM? JLS가 잃어 버렸던 제한을 제공 할까? –
@ St.Antario : 내부 클래스의 작동 방식이 아닙니다. 대신 new B(). new Inner()를 사용하십시오. 추가 매개 변수처럼 생각할 생각은 아닙니다. 내부 클래스의 인스턴스를 생성하는 데 사용되는 둘러싼 클래스의 인스턴스라고 생각할 수 있습니다. –
JLS가이를 명시 적으로 지정합니까? –