7

在 Java 中,如果我想使用方法而不创建特定类的实例对象,我会使用静态导入。

就像是:

import static com.company.SomeClass.*;

然后我可以在另一个类中调用该类的方法,而无需创建 SomeClass 的实例。

一旦我使用了该类中的方法,是否也调用了该类中的构造函数?

例如,如果我打电话

SomeClass.doStuff();

SomeClass 在幕后调用构造函数吗?

4

3 回答 3

3

SomeClass 在幕后调用构造函数吗?

调用方法不会调用构造函数。创建类的实例时调用构造函数。在这里,您没有实例化SomeClass,而只是static直接在类名上访问该方法。因此,没有必要调用构造函数。

然而,如果你想调用一个实例方法,那么首先你需要一个包含该方法的类的实例。您只能使用类的实例来访问实例方法。但是在这种情况下,调用该方法也不会在幕后调用构造函数。

于 2013-08-25T20:03:38.207 回答
0

static import和你说的没有任何关系。它只是确保与

import static org.junit.Assert.assertEquals

你可以使用assertEquals()而不是Assert.assertEquals()

当您有以下签名时:

public class Assert {
 public static bool assertEquals()
}

除此之外:不,您在使用静态方法时不会调用构造函数。有关这方面的说明,请参阅@Rohit 的回答。

于 2013-08-25T20:14:33.637 回答
0

构造函数仅在执行new MyClass()或时才被调用Class.newInstance。在这种情况下,您可以编写一些静态块。

于 2013-08-25T20:16:39.907 回答