Java静态上下文

时间:2010-11-09 01:30:41

标签: java static

我正在使用一个具有非静态方法调用的包。 它不会让我从静态上下文中调用此方法。 我不能改变非静态方法,我该如何调用这个方法?

6 个答案:

答案 0 :(得分:5)

从该类中创建一个对象并在该对象上调用该方法?

import com.acme.myclass;

...

MyClass obj = new MyClass();
obj.nonStaticMethod();

如果您使用的软件包有任何文档,请务必仔细查看它以了解您希望如何使用该类及其非静态方法。您可能还希望在面向对象的编程中更多地了解静态与非静态,以便更好地了解差异。

答案 1 :(得分:5)

为了调用非静态方法,必须在对象的实例上调用该方法。

鉴于以下课程:

public class MyClass {
    public void nonStaticMethod();
}

您可以这样调用方法:

new MyClass().nonStaticMethod();

或者,如果您需要多次调用该方法,可以将其保存到对象中。

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

答案 2 :(得分:1)

该方法属于一个类。

因此,您需要做的是创建该类的实例(最有可能使用new运算符),然后使用它:

package a;

class A {
    public void theMethod(){
    }
}

.....
package b;
import a.A;
class Main {
    public static void main( String [] args ) {
        A a = new A();
        a.theMethod();
     }
}

答案 3 :(得分:1)

每当需要调用非静态方法时,您都可以实例化该类的对象,例如:

new BadlyWrittenClass().BadlyWrittenMethod();

但是,如果您要做很​​多事情,那么以这种方式继续创建和销毁对象可能会变得低效。

更好的方法可能是实例化一个对象,例如在您自己的类构造函数中,只需在需要调用该方法时使用它。如果每次都不需要新初始化的对象,则可能更有效。

但您可能还想记住,可能存在原因为什么该方法不是静态的(尽管我在上面的类和方法名称中没有那么微妙的刺戳)。确保在创建新实例时不需要某些您未设置的状态。换句话说,不要盲目地尝试不理解这样做。

答案 4 :(得分:0)

实例类中不需要实例化静态方法,而实例方法则需要实例化。

要获取实例方法,首先需要使用new关键字的类实例。然后,您可以访问此类的实例方法。

答案 5 :(得分:0)

无法从静态上下文调用非静态(实例)。其他方式是可能的。