在 Java 中,如果我想使用方法而不创建特定类的实例对象,我会使用静态导入。
就像是:
import static com.company.SomeClass.*;
然后我可以在另一个类中调用该类的方法,而无需创建 SomeClass 的实例。
一旦我使用了该类中的方法,是否也调用了该类中的构造函数?
例如,如果我打电话
SomeClass.doStuff();
SomeClass 在幕后调用构造函数吗?
在 Java 中,如果我想使用方法而不创建特定类的实例对象,我会使用静态导入。
就像是:
import static com.company.SomeClass.*;
然后我可以在另一个类中调用该类的方法,而无需创建 SomeClass 的实例。
一旦我使用了该类中的方法,是否也调用了该类中的构造函数?
例如,如果我打电话
SomeClass.doStuff();
SomeClass 在幕后调用构造函数吗?
SomeClass 在幕后调用构造函数吗?
调用方法不会调用构造函数。创建类的实例时调用构造函数。在这里,您没有实例化SomeClass
,而只是static
直接在类名上访问该方法。因此,没有必要调用构造函数。
然而,如果你想调用一个实例方法,那么首先你需要一个包含该方法的类的实例。您只能使用类的实例来访问实例方法。但是在这种情况下,调用该方法也不会在幕后调用构造函数。
static import
和你说的没有任何关系。它只是确保与
import static org.junit.Assert.assertEquals
你可以使用assertEquals()
而不是Assert.assertEquals()
当您有以下签名时:
public class Assert {
public static bool assertEquals()
}
除此之外:不,您在使用静态方法时不会调用构造函数。有关这方面的说明,请参阅@Rohit 的回答。
构造函数仅在执行new MyClass()
或时才被调用Class.newInstance
。在这种情况下,您可以编写一些静态块。