我正在使用一个具有非静态方法调用的包。 它不会让我从静态上下文中调用此方法。 我不能改变非静态方法,我该如何调用这个方法?
答案 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)
无法从静态上下文调用非静态(实例)。其他方式是可能的。