java - Attempting to reference non-static field with non-static method results in error -
i have created class, obstacle, obstacle constructor , function.
package environment; import static java.lang.system.out; import environment.worldenvironment; public class obstacle { private string obstacletype, setobstacletype; private int obstaclesize, obstaclexcoord, obstacleycoord, setobstaclesize, setobstaclexcoord, setobstacleycoord; public obstacle(string gettype, int getsize, int getxcoord, int getycoord){ obstacletype = gettype; obstaclesize = getsize; obstaclexcoord = getxcoord; obstacleycoord = getycoord; } public void generateobstacle(int getplayercurrentxcoord, int getplayercurrentycoord){//code in generateobstacle}
in main method, call generateobstacle() different class (note both class , obstacle class within same package).
import environment.obstacle; public void main(string[] args){ spawnplayer(); while(rungame){ //one example of calling obstacle member variables , calling generateobstacle() switch((playerinput.nextline()).touppercase()){ case "w": if(currentxcoord + 1 == obstacle.obstaclexcoord && obstacle.obstacleycoord == currentycoord){ out.println("there " + (obstacle.obstacletype).tolowercase() + " trying go."); printplayercoords(); } else{ moveplayerforward(); printplayercoords(); if(spawnobstacle.nextint(8) == 3){ obstacle.generateobstacle(currentxcoord, currentycoord); } } break;
all
obstacle.
variable references throw error, saying "cannot make static reference non-static field. same with
obstacle.generateobstacle(currentxcoord, currentycoord);
i'm not sure why i'm being given error, because no member variables of obstacle static, , main method not static. there no static fields in generateobstacle() method itself. obstacle constructer:
obstacle newobstacle = new obstacle(setobstacletype, setobstaclesize, setobstaclexcoord, setobstacleycoord);
is there can explain me why i'm getting error? , yes, have looked around have not found explanatory solutions. in advance.
you can not call generateobstacle()
method -
obstacle.generateobstacle(currentxcoord, currentycoord);
since generateobstacle()
non-static method in class.
solution:
(1) make generateobstacle()
method static , call class name-
obstacle.generateobstacle(currentxcoord, currentycoord);
(2) or create instance of obstacle
, anobstacle
use call method -
obstacle anobstacle = new obstacle(...); anobstacle.generateobstacle(currentxcoord, currentycoord);
note: non-static type member of class (that method or variables) lives within object of class. means non-static
members usable when object created. not true static
member of class. can access static
member of class without creating instance/object of class.
Comments
Post a Comment