【问题标题】:How to enter a non static method from a static one如何从静态方法输入非静态方法
【发布时间】:2014-01-29 08:43:08
【问题描述】:
CollegeTester.java:10: error: non-static method getCommand() cannot be referenced from a static context
        getCommand();//goes to command
    ^

我将如何输入此方法。将其设为public static void 只会导致更多问题

import java.util.Scanner;

public class CollegeTester
{   
    public String name;
    Scanner input = new Scanner(System.in);

    public static void main(String[] args)
    {
        getCommand();//goes to command
    }

    //Ask user for a command
    public void getCommand()
    {
        // do stuff
    }
}

【问题讨论】:

标签: java object methods static non-static


【解决方案1】:

你可以在 main 中调用它:

CollegeTester c = new CollegeTester();
c.getCommand();

【讨论】:

  • 我将 CollegeTester c = new CollegeTester() 放在主目录还是类中?
【解决方案2】:

非静态方法是实例方法,因此可以通过类的实例进行访问:

new CollegeTest().getCommand();

【讨论】:

    【解决方案3】:

    在 main 方法中创建 CollegeTester 类的实例并调用该方法。

    new CollegeTester().getCommand();
    

    【讨论】:

      【解决方案4】:

      你需要创建一个 CollegeTester 的实例:

         main(...)
         {
            CollegeTester t = new CollegeTester();
            t.getCommand();
         }
      

      【讨论】:

        【解决方案5】:

        getCommand() 不是静态的,所以你不能在main() 中调用它,因为main() 是静态的。你已经创建了一个对象,然后调用了getCommand()

        或者将getCommand()设为静态

        这是通过创建对象并调用getCommand()的方式

            import java.util.Scanner;
        
            public class CollegeTester
            {   
            public String name;
            Scanner input = new Scanner(System.in);
        
            public static void main(String[] args)
            {
        CollegeTester c=new CollegeTester();
                c.getCommand();//goes to command
            }
        
            //Ask user for a command
            public void getCommand()
            {
                do stuff
            }
        

        这是使getCommand()静态的方式

        import java.util.Scanner;
        
        public class CollegeTester
        {   
        public String name;
        Scanner input = new Scanner(System.in);
        
        public static void main(String[] args)
        {
            getCommand();//goes to command
        }
        
        //Ask user for a command
        public static void getCommand()
        {
            do stuff
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多