Pri programovaní v jazyku Java sa môže objaviť chybová správa "non-static method... cannot be referenced from a static context" (nestatická metóda nemôže byť odkazovaná zo statického kontextu).
Táto chybová správa nastáva, keď sa snažíme volať nestatickú metódu (členskú metódu) z vnútra statickej metódy alebo statického bloku kódu.
Na lepšie pochopenie tejto chyby je potrebné mať jasno v pojme statických a nestatických metód. Statické metódy patria triede ako celku a nie sú viazané na konkrétnu inštanciu triedy.
Na druhej strane, nestatické metódy sú viazané na konkrétnu inštanciu triedy a môžu pristupovať ku všetkým premenným triedy vrátane tých, ktoré sú nestatické.
Ak sa snažíme z vnútra statickej metódy volať nestatickú metódu, javac (kompilátor jazyka Java) vyhodí chybovú správu "non-static method... cannot be referenced from a static context".
Dôvodom je, že statická metóda nie je viazaná na žiadnu konkrétnu inštanciu triedy a preto nemôže volať metódu, ktorá je viazaná na nejakú inštanciu.
Na vyriešenie tejto chyby existuje niekoľko prístupov.
Ak chceme volať nestatickú metódu zvnútra statickej, môžeme vytvoriť inštanciu triedy, na ktorej budeme volať túto metódu. Alternatívne, môžeme túto metódu premeniť na statickú, ak to je vhodné.
Týmto spôsobom sa metóda stane dostupnou zvnútra iných statických metód.
A teraz pozrieme príklad kódu v jazyku Java, ktorý ilustruje chybu "non-static method... cannot be referenced from a static context":
V tomto príklade trieda StaticExample obsahuje statické aj nestatické prvky. Vo funkcii main, ktorá je statická, sa pokus o volanie nonStaticMethod() priamo spôsobí chybu "non-static method... cannot be referenced from a static context".
Chyba vzniká preto, že statická metóda (main) nemá priamy prístup k nestatickým metódam a premenným.
Aby sme túto chybu opravili, vytvoríme inštanciu triedy StaticExample a voláme nonStaticMethod() cez túto inštanciu.
Celkovo je dôležité mať na pamäti, že statické metódy nemajú prístup k nestatickým premenným alebo metódam priamo.
Preto je potrebné dávať pozor na to, aké metódy voláme a z akého kontextu. Riešenie tejto chyby spočíva v pochopení rozdielu medzi statickými a nestatickými členmi triedy a v správnom používaní týchto členov v závislosti od kontextu, v ktorom sa nachádzame.
V tomto článku sme sa pozreli na chybovú správu "non-static method... cannot be referenced from a static context" v jazyku Java.
Táto chyba nastáva pri pokuse o volanie nestatickej metódy z vnútra statickej metódy alebo bloku kódu. Riešenie tejto chyby spočíva v pochopení konceptu statických a nestatických členov triedy a vhodnom používaní týchto členov v závislosti od kontextu.
Úvod do programovania pre každého bez prechádzajúcich znalostí.
Stiahnite so náš ebook teraz výnimočne zdarma!!!