Войти или зарегистрироваться

Помогите Перезапись переменных

Статус
Закрыто для дальнейших ответов.

ReloGGrc

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
ALis
В общем, есть класс содержащий настройки конфигурационного файла,
Допустим в нем лежит
private boolean showExamples = false;

Есть метод
public void setShowExamples(boolean show) { this.showExamples = show; }

И если его вызвать при включении плагина, т.е. onEnable то он устанавливает нужное из конфига значение, если же его вызвать при исполнении команды, то ничего не меняется, если showExamples был false то так и остался false

Как быть? Я уже всю голову сломал, почему оно не изменяет.
 
В общем, есть класс содержащий настройки конфигурационного файла,
Допустим в нем лежит
private boolean showExamples = false;

Есть метод
public void setShowExamples(boolean show) { this.showExamples = show; }

И если его вызвать при включении плагина, т.е. onEnable то он устанавливает нужное из конфига значение, если же его вызвать при исполнении команды, то ничего не меняется, если showExamples был false то так и остался false

Как быть? Я уже всю голову сломал, почему оно не изменяет.
Ванга не в сети, Нострадамус ушёл с форума. Неси код
 
https://hastebin.com/zufevunaho
В коротком виде, чтоб понятней было
https://metanit.com/java/tutorial/3.1.php
https://javarush.com/groups/posts/1...napisanie-sobstvennihkh-klassov-konstruktorih

Ты в классе команды создаешь НОВЫЙ объект конфигурации.
Лучше ознакомься с ресурсами выше.

То есть у тебя два объекта конфигурации, один в главном классе, другой в классе с командой.
И эти два объекты разные (датычо). В твоем случае есть решение: Передать в конструктор команды поле
generalConfigSettings и всё.

https://topjava.ru/blog/rukovodstvo-po-konstruktoram-v-java
https://javarush.com/groups/posts/konstruktory-v-java-1

И не используй static для решения этой проблемы (и вообще не используй если не знаешь как он влияет на поле/метод), иначе к тебе лично придут программисты и дадут лопатой по хребтине
 
Я единственное что сделал, это статический метод получения класса настроек, что бы его передавать проще, или так тоже нельзя?

Спасибо кстати!
 
Я единственное что сделал, это статический метод получения класса настроек, что бы его передавать проще, или так тоже нельзя?

Спасибо кстати!

Это считается плохой практикой использовать static неуместно. Так как если не знать что инструмент делает, то это явно приводит к плохим последствиям
 
Т.е. правильней было бы так?
GeneralConfigSettings generalConfigSettings;
public command(GeneralConfigSettings generalConfigSettings) {
this.generalConfigSettings = generalConfigSettings;
}
 
Т.е. правильней было бы так?
GeneralConfigSettings generalConfigSettings;
public command(GeneralConfigSettings generalConfigSettings) {
this.generalConfigSettings = generalConfigSettings;
}
Да, в конструкторе правильней всего
P.S: Классы с заглавной называем, методы и переменные с маленькой
 
Да, в конструкторе правильней всего
P.S: Классы с заглавной называем, методы и переменные с маленькой
Ну я уже не на столько пень))))) Это я взял с примера который показывал. Кстати, рас уж такое, хотел спросить, лучше же создать локальную переменную класса и взять из нее значения, или глобальную?
 
Ну я уже не на столько пень))))) Это я взял с примера который показывал. Кстати, рас уж такое, хотел спросить, лучше же создать локальную переменную класса и взять из нее значения, или глобальную?
В плане локальную и глобальную, не совсем понял? Если ведет к одному и тому же объекту, то, по идее, без разницы
 
Ну, как бы я могу создать вне метода переменную GeneralConfigSettings, а могу в самом методе ее создать, и по идее если я ее создам вне метода, она останется в памяти на все время работы плагина, а локальная по идее должна отработать в методе и пропасть, ну как я думаю.
Либо я не правильно понимаю.
 
Ну, как бы я могу создать вне метода переменную GeneralConfigSettings, а могу в самом методе ее создать, и по идее если я ее создам вне метода, она останется в памяти на все время работы плагина, а локальная по идее должна отработать в методе и пропасть, ну как я думаю.
Либо я не правильно понимаю.
Ну она пропадет не сразу, а когда сработает GC, но по сути, да
 
Понял, спасибо за ответ!
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх