Тому цю проблему можна вирішити шляхом звернення до змінних за допомогою імен об’єктів. Коротше кажучи, нам завжди потрібно створити об’єкт, щоб посилатися на нестатичну змінну зі статичного контексту. Щоразу, коли створюється новий екземпляр, створюється нова копія всіх нестатичних змінних і методів. 14 жовтня 2020 р.
Проблема полягає в тому, що статика може існувати без об’єкта класу, нестатику потрібен об’єкт, тому ви не можете змішувати контекст (статика не знає об’єкта, до якого нестатика – у вашому коді змінна s – належить). Коротше кажучи: додати ключове слово static до об’єкта сканера.
Рішення помилки Простіше кажучи, ми повинні створити об’єкт класу для посилання на нестатичну змінну зі статичного контексту. Коли створюється новий екземпляр змінної, створюється нова копія всіх нестатичних змінних.
Щоб викликати нестатичну змінну зі статичного методу, спочатку потрібно створити екземпляр класу. У цьому прикладі ціле число a не є статичним. Отже, щоб отримати доступ до нього зі статичного методу main, потрібно створити екземпляр класу Calc.
тобто посилання на змінну за допомогою статичного посилання означає посилання за допомогою імені класу. але, щоб отримати доступ до змінних екземплярів, необхідно створити об’єкт, вони недоступні в пам’яті, перед створенням екземпляра. Тому ви не можете створювати статичне посилання на нестатичні поля (змінні) у Java.
Помилка компіляції «На нестатичний метод… неможливо посилатися зі статичного контексту» виникає, коли робиться спроба викликати нестатичний метод зі статичного контексту. Цей статичний контекст може бути статичним методом, статичним блоком або методом main(), який завжди є статичним.