【问题标题】:Java and main()Java 和 main()
【发布时间】:2012-03-05 20:00:59
【问题描述】:

大约一年来我第一次使用 Eclipse(和一般的 java)。我忘记的事情如下:

我有一个函数 (void callvote(),我希望它会被我的 main 函数激活(也就是说,在程序的早期自动激活)。我目前将它与 main 函数放在同一个类(主体)中功能本身。
我尝试用callvote(); 调用它并得到一个错误,“- 无法从类型主体中对非静态方法 callvote() 进行静态引用” 目前,我的函数 callvote 在 main 下方的空间中,简单地说

public void callvote() { } 通过将更多函数与 main 放在同一个类中,我是否犯了可怕的罪过? 这是我以某种方式错过的相对简单的修复吗? 这个错误是什么意思? 我用这段代码唤醒了阿扎托斯吗? 提前致谢, 托莫斯

【问题讨论】:

    标签: eclipse main


    【解决方案1】:

    main() 是一个静态方法,这意味着您可以直接从类中调用它,而非静态成员只能从对象中调用。为了让您调用 callvote() 方法,您需要首先实例化您的类的一个对象:

    public static void main(String [ ] args) {
        MyClass myObject = new MyClass();
        myObject.callvote();
    }
    

    另一种避免错误的方法是让您调用vote() 方法也是静态的,但这通常不是您想要做的(但这取决于您的类和方法的性质)。

    这篇文章描述了过度使用静态方法的一些危险:Class with single method -- best approach?

    【讨论】:

      【解决方案2】:

      试试这个:

      public class Main {
          public static void main(String[] args) {
              new Main().callvote()       
          }   
      }
      

      您的 java 程序的 main() 入口点是静态的。您不能从静态方法调用非静态方法。

      所以你必须先实例化你的类,然后再调用方法。

      【讨论】:

        【解决方案3】:

        如果没有static 修饰符,callvote 隐含地是一个实例方法 - 您需要一个类的实例来调用它。

        您也可以将其标记为静态:

        public static void callvote() ...
        

        或者创建一个声明类的实例:

        MyClass instance = new MyClass();
        instance.callvote();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-04
          • 1970-01-01
          • 2020-07-24
          • 2017-02-02
          • 2018-03-29
          • 2016-06-22
          • 2014-03-26
          • 1970-01-01
          相关资源
          最近更新 更多