public class MainMDI extends javax.swing.JFrame {
private static MainMDI thiz;
public MainMDI() {
initComponents();
thiz = this;
}
}
Я создаю приложение MDI в качелях. Класс MainMDI является основным классом приложения, поэтому основной метод находится в этом классе. В приведенном выше коде создается статическая переменная с именем thiz, которая указывает на экземпляр класса MainMDI при запуске приложения.Java: Когда переменная «this» инициализирована?
Я планирую использовать переменную тиз для доступа к нестатическим (экземплярам) элементам класса MainMDI из основного метода. (Я не могу получить доступ к нестационарным членам из основного метода, так как основным методом является статический член в классе MainMDI в моем приложении).
public class MainMDI extends javax.swing.JFrame {
private static MainMDI thiz = this;
public MainMDI() {
initComponents();
}
}
Но при попытке инициализировать переменную Thiz, как в приведенном выше коде, компилятор говорит нестатическая переменная это не может ссылаться из статического контекста. Но я не имею в виду это в статическом контексте, вот я? Это потому, что переменная this, будучи нестатической, еще не инициализирована, когда статическая переменная это инициализируется?
Кроме того, была бы лучше практика программирования, если бы я не задал класс MainMDI как основной класс и создал другой класс с основным методом в нем и задал этот класс как основной класс?
Похоже, что вам нужен синглтон. Google для этого – Bohemian
Нет, мне не нужно создавать класс MainmDI singleton. Я просто хочу иметь основной метод внутри класса MainMDI, и я хочу, чтобы основной метод имел доступ к членам экземпляра класса MainMDI. – PrashanD
@Prashan Предоставляя статическую переменную (aka _one_), которая ссылается на экземпляр (aka _one_) вашего класса, вы эффективно ограничиваете количество доступных экземпляров вашего класса _one_ (по крайней мере, в том контексте, в котором, по вашему мнению, получить доступ через статический метод). Наличие нескольких экземпляров и создание только последней доступной через статический _thiz_ - это то, что можно было бы решить по-другому, поэтому все неявно исключают эту опцию. Следовательно, мы все думаем, что вы действительно хотите использовать одноэлементный подход.Если вы продолжаете настаивать на ответе _no! _, Тогда вам придется описать ваш сценарий. –