나는 그것의 인수로 TextBox 개체를 가진 단일 인수 생성자를 가진 클래스 Base가 있다고 가정합니다. 나는 다음과 같은 형식의 간단한 클래스가있는 경우 :생성자에서 super()보다 먼저 계산을 수행 할 수 있습니까?
public class Simple extends Base {
public Simple(){
TextBox t = new TextBox();
super(t);
//wouldn't it be nice if I could do things with t down here?
}
}
나는 슈퍼에 대한 호출이 생성자의 첫 번째 호출해야 내게 말하는 오류가 발생합니다. 그러나 이상하게도 나는 이것을 할 수있다.
public class Simple extends Base {
public Simple(){
super(new TextBox());
}
}
왜 이것이 허용되었지만 첫 번째 예가 아닌가? 먼저 하위 클래스를 설정해야한다는 것을 이해할 수 있으며 수퍼 생성자가 호출되기 전에 객체 변수가 인스턴스화되는 것을 허용하지 않을 수도 있습니다. 그러나 t는 분명히 메소드 (로컬) 변수이므로 허용하지 않는 이유는 무엇입니까?
이 제한 사항을 해결할 수있는 방법이 있습니까? 수퍼바이저를 호출하기 전에 생성자에 입력 한 후에 변수를 보관할 수있는 안전하고 안전한 방법이 있습니까? 또는 더 일반적으로 super가 실제로 호출되기 전에 계산이 완료되도록하지만 생성자 내에서 계산을 허용합니까?
감사합니다.
이것을 가지고 가능한 어떤 이유 gwt로 태그되었습니다? 당신이 gwt에서 그것을 시도했기 때문에 ?? –
TextBox는 GWT 클래스 였지만 아니요, 제가 생각하기에는 관련이 없습니다. –