Чтобы сэкономить оперативную память, я хочу создавать классы на случай, если они понадобятся, а затем их можно будет использовать повторно.
Мой класс таков:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Engine implements ActionListener {
JFileChooser fileChooser = new JFileChooser();
Boolean addWindow = false;
Engine(){}
//@ void actionPerformed()
public void actionPerformed(ActionEvent evt){
if ( evt.getActionCommand().equals("add") ) {
if ( addWindow = false ) {
Add Add = new Add();
Add.setVisible(true);
}
else Add.setVisible(true);
}
}
}
(Всего один класс проекта)
Я считаю, что это просто глупая ошибка, но я не могу ее понять.
Но если я попытаюсь скомпилировать, он говорит:
Engine.java:21: ошибка: на нестатический метод setVisible (boolean) нельзя ссылаться из статического контекста: else Add.setVisible (true); (Маркер находится в точке между Add и setVisible ().)
Я не хочу каждый раз воссоздавать класс Add. Просто используйте повторно, если он уже был создан.
1 ответ
Add add = new Add();
if ( addWindow == false ) { //Thanks to @TofuBeer's comment. I didn't notice this at all.
add.setVisible(true);
}
else
add.setVisible(true);
Поскольку вы используете Add
(это имя самого класса), он пытается вызвать метод статически, который выдает ошибку, поскольку это не статический метод в вашем классе Add
.
Используйте созданный вами экземпляр для вызова метода и убедитесь, что имя экземпляра не совпадает с именем класса (имя класса с большой буквы A
).
Добавить - название класса
добавить - имя экземпляра (если вы также укажете здесь Add
, он будет учитывать имя класса вместо имени экземпляра).
add
будет ограничен блоком if
и будет недоступен в else
.
CASE-SENSITIVE
. Запомни.
true
, либо false
. Следовательно, он вам понадобится в любом случае.
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.