Можно ли сделать вычисление до Super () в конструкторе?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Можно ли сделать вычисление до Super () в конструкторе?

Сообщение Anonymous »

Учитывая, что у меня есть база класса, которая имеет один конструктор аргумента с объектом Textbox в качестве аргумента. Если у меня есть класс простой из следующей формы: < /p>
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?
}
}
< /code>
Я получу ошибку, сообщая мне, что вызов Super должен быть первым вызовом в конструкторе. Однако, как ни странно, я могу сделать это. < /P>
public class Simple extends Base {
public Simple(){
super(new TextBox());
}
}
< /code>
Почему это разрешено, но первый пример не? Я могу понять, что нужно сначала настроить подкласс и, возможно, не позволить переменным объекта быть созданными до того, как будет вызван супер-конструктор. Но t - это явно переменная метода (локальная), так почему бы не разрешить это? < /P>
Есть ли способ обойти это ограничение? Есть ли хороший и безопасный способ удерживать переменные для вещей, которые вы могли бы построить, прежде чем называть супер, но после того, как вы ввели конструктор? Или, более общее, позволяя сделать вычисление до того, как на самом деле будет вызван супер, но внутри конструктора?

Подробнее здесь: https://stackoverflow.com/questions/230 ... onstructor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»