1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем ReloGGrc, 11 дек 2022.

Статус темы:
Закрыта.
  1. Автор темы
    ReloGGrc

    ReloGGrc Активный участник Пользователь

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

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

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

    Как быть? Я уже всю голову сломал, почему оно не изменяет.
     
  2. Sturm_PT

    Sturm_PT Активный участник Пользователь

    Баллы:
    76
    Ванга не в сети, Нострадамус ушёл с форума. Неси код
     
  3. Автор темы
    ReloGGrc

    ReloGGrc Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    ALis
  4. JavaSher

    JavaSher Активный участник Пользователь

    Баллы:
    66
    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 для решения этой проблемы (и вообще не используй если не знаешь как он влияет на поле/метод), иначе к тебе лично придут программисты и дадут лопатой по хребтине
     
  5. Автор темы
    ReloGGrc

    ReloGGrc Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    ALis
    Я единственное что сделал, это статический метод получения класса настроек, что бы его передавать проще, или так тоже нельзя?

    Спасибо кстати!
     
  6. JavaSher

    JavaSher Активный участник Пользователь

    Баллы:
    66
    Это считается плохой практикой использовать static неуместно. Так как если не знать что инструмент делает, то это явно приводит к плохим последствиям
     
  7. Автор темы
    ReloGGrc

    ReloGGrc Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    ALis
    Т.е. правильней было бы так?
    GeneralConfigSettings generalConfigSettings;
    public command(GeneralConfigSettings generalConfigSettings) {
    this.generalConfigSettings = generalConfigSettings;
    }
     
  8. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Да, в конструкторе правильней всего
    P.S: Классы с заглавной называем, методы и переменные с маленькой
     
  9. Автор темы
    ReloGGrc

    ReloGGrc Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    ALis
    Ну я уже не на столько пень))))) Это я взял с примера который показывал. Кстати, рас уж такое, хотел спросить, лучше же создать локальную переменную класса и взять из нее значения, или глобальную?
     
  10. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    В плане локальную и глобальную, не совсем понял? Если ведет к одному и тому же объекту, то, по идее, без разницы
     
  11. Автор темы
    ReloGGrc

    ReloGGrc Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    ALis
    Ну, как бы я могу создать вне метода переменную GeneralConfigSettings, а могу в самом методе ее создать, и по идее если я ее создам вне метода, она останется в памяти на все время работы плагина, а локальная по идее должна отработать в методе и пропасть, ну как я думаю.
    Либо я не правильно понимаю.
     
  12. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Ну она пропадет не сразу, а когда сработает GC, но по сути, да
     
  13. Автор темы
    ReloGGrc

    ReloGGrc Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    ALis
    Понял, спасибо за ответ!
     
Статус темы:
Закрыта.

Поделиться этой страницей