大约一年来,我第一次摆弄Eclipse(以及一般的java)。我忘记了以下几件事:
我有一个函数(void callvote),我希望它能被我的主函数激活(也就是说,在程序的早期自动激活)。我现在把它和主函数本身放在同一个类(主体)中
我尝试用callvote();
调用它,但得到一个错误,"-无法从类型体对非静态方法callvote()进行静态引用"我的函数callvote现在在main下面的空格里,简单地说
public void callvote()
{
}
我把更多的函数和main放在同一个类中,是不是犯了一个可怕的罪?这是一个相对容易的解决方案,但我不知怎么错过了?这个错误是什么意思?我用这个密码叫醒阿扎托斯了吗?提前感谢,Tormos
如果没有static
修饰符,callvote
隐含地是一个实例方法-您需要一个类的实例来调用它。
你也可以将其标记为静态:
public static void callvote() ...
或者创建声明类的实例:
MyClass instance = new MyClass();
instance.callvote();
main()是一个静态方法,这意味着您可以直接从类中调用它,而非静态成员只能从对象中调用。为了调用callvote()方法,您需要首先实例化类的一个对象:
public static void main(String [ ] args) {
MyClass myObject = new MyClass();
myObject.callvote();
}
另一种避免错误的方法是使callvote()方法也是静态的,但这通常不是您想要做的(但这取决于类和方法的性质)。
这篇文章描述了过度使用静态方法的一些危险:用单一方法类——最好的方法?
试试这个:
public class Main {
public static void main(String[] args) {
new Main().callvote()
}
}
java程序的main()
入口点是静态的。不能从静态方法调用非静态方法。
因此,您必须首先实例化您的类,然后调用该方法。