每当我尝试在main中调用一个方法时,它就会给出错误
非静态方法不能从静态上下文引用
我尝试在main中创建对象并将它们作为参数发送到方法,但它也不起作用。
答案 0 :(得分:3)
public class Foo {
public static void main(String[] args) {
Foo foo = new Foo();
foo.print();
}
public void print() {
System.out.println("Hello");
}
}
答案 1 :(得分:1)
您需要从静态方法 访问(调用)非静态方法 您的类实例。非静态方法或实例方法仅限于一个类的失效。
以下是描述它的简单示例:
class Test {
public void nonStaticMethod() {
}
public static void main(String[] args) {
Test t = new Test(); //you need to create an instance of class Test to access non-static methods from static metho
t.nonStaticMethod();
}
}
答案 2 :(得分:1)
main
是一种静态方法。 public static void main(String[] args)
。
从静态方法或块中可以访问任何其他静态方法以及静态实例。如果您要访问非静态方法或实例,则必须通过引用创建对象和访问。
public class Test{
public static void main(String[] args){
print();// static method call
Test test = new Test();
test.print();// non static method call
}
public void print() {
System.out.println("Hello non static");
}
public static void print() {
System.out.println("Hello static");
}
}
答案 3 :(得分:0)
创建对象时会实例化常规方法,但static
方法不需要这样做。当你在static
方法中时,不能保证非静态方法已被实例化(即可能没有创建Object
),因此编译器不允许它。