How to reference non-static variable name from static context?

前端 未结 5 640
闹比i
闹比i 2021-01-21 02:22

I am trying to write a code that lets the user enter a team name. Here is my code:

public class Team {
    public String name;

    public static void main(Strin         


        
相关标签:
5条回答
  • 2021-01-21 02:27

    static methods do not allow to use the non-static variables directly because non-static/instance variables are initialized in memory on object creation. Hence you need to create an object of the the class and then use the variable. Do something like this:

    Team teamObj = new Team();
    //now access name variable using teabObj instance
    teamObj.name = tn.nextLine();    
    
    0 讨论(0)
  • 2021-01-21 02:33

    name is a team name. So you need to instantiate a new Team object and set its name :

    public static void main(String[] args) {
        System.out.println("Enter name team");
        Scanner tn = new Scanner(System.in);
        Team team = new Team();
        team.name = tn.nextLine();     
    }
    
    0 讨论(0)
  • 2021-01-21 02:34

    Create a Team object if you want.

    Team team = new Team();
    team.name = tn.nextLine();
    
    0 讨论(0)
  • 2021-01-21 02:37

    You can use reflection as follows to access that non static field.

        System.out.println("Enter name team");
        Scanner tn = new Scanner(System.in);
        Team team=new Team();
        Field field=Team.class.getField("name");
        field.set(team,tn.next());
        System.out.println((String) field.get(team));
    

    Live demo for reflection.

    Or you can try as follows.

       Team team = new Team();
       team.name = tn.nextLine();   
    

    Live demo

    0 讨论(0)
  • 2021-01-21 02:46

    Static methods/variables are bound to class. They have no access to non-static variables ( they have no idea on which instance of class they should call the method). You have to create object, and then call the non-static method.

    0 讨论(0)
提交回复
热议问题