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

Помогите в классе не работает объект главного класса

Тема в разделе "Разработка плагинов для новичков", создана пользователем LalkaLalka, 17 май 2019.

  1. Автор темы
    LalkaLalka

    LalkaLalka Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    LALKATOP
    У меня есть класс, который содержит в себе некоторые методы, которые мне нужно вызвать из другого класса. И этот класс использует объект главного класса, чтобы с помощью него брать настройки из конфига. Но почему-то когда вызывается метод из этого класса, то в консоли пишет ошибку о том, что объект главного класса равен null. Почему так может быть?
     
  2. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Возможно ты вызываешь метод до того, как выдал обьект главного класса другому. Либо вообще не выдал.
     
  3. Автор темы
    LalkaLalka

    LalkaLalka Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    LALKATOP
    Ну вот что тут не так?
    upload_2019-5-17_15-8-52.png

    (главный класс)
    upload_2019-5-17_15-9-21.png
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Промолчу :D.
     
  5. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Ну дак и где ты видишь запуск конструктора EconomyManager? Его нет, отсюда plugin остается null.
    У тебя три варианта:
    1. В EconomyManager сделать вместо конструктора блок:
    Код:
    static {
        EconomyManager.plugin = Business.plugin;
    }
    2. В onEnable() класса Business вызвать конструктор на самом начале:
    Код:
    new EconomyManager(this);
    3. В классе EconomyManager использовать plugin класса Business, тобишь обращаться черезе Business.plugin.

    Все три варианта ужасны, но пока ты только разбираться начинаешь, сойдет.
    Лучше не использоват статики, а передавать класс плагина ("главный класс") другим классам через конструктор (это уже на примере 2 варианта, + обьект сохраняешь в классе плагина, внутри EconomyManager методы должны быть НЕ статичны). Тот же EconomyManager ты можешь хранить как обьект в классе плагина, оттуда сделать метод getEconomyManager() и т.д.
     
  6. Автор темы
    LalkaLalka

    LalkaLalka Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    LALKATOP
    Спс!
     
  7. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ну все, научил чела говно юзать. Можно выбрасывать :D.
     
  8. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Я не давал ответа в виде кода тут. Ты меня с кем то перепутал.
     
  9. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Ну как можешь увидеть, я в конце написал об этом
    Какую сторону выбирать - его решение)
     
  10. Автор темы
    LalkaLalka

    LalkaLalka Новичок Пользователь

    Баллы:
    11
    Имя в Minecraft:
    LALKATOP
    блин, все что ты сказал попробовал, но не робит
     
  11. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    И не должно. Нужно правильно кодить, а не так как ты.
    Код:
    public class Main extends JavaPlugin {
        private EconomyManager eco;
    
        @Override
        public void onEnable() {
            this.saveDefaultConfig();
            this.reloadConfig();
            this.eco = new EconomyManager(this);
            this.getCommand("bus").setExecutor(new Commands(this.eco));
        }
    }
     
    Последнее редактирование: 18 май 2019
  12. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Он был написал оверлет назад и не мной, ок да. Но даже там все в ооп стиле как положено. И опять же не в тему.
     
  13. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Покажи где собираю? Ты похоже опять меня с кем то перепутал. И это уже на зависть смахивает. Если ты не можешь сам зарабатывать, никто же не виноват.
     
  14. Nikolai_Faint

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

    Баллы:
    96
    Перепутал alexandrage который залил лаунчер с @new-sashok724 , за помощь я бы сам брал деньги, не каждый выдержит по 4 часа объяснять что и куда.
     
  15. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Хах ну ты и смешной) А кто помогать то бесплатно будет?
     

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