在Java中,如果我想在不创建特定类的实例对象的情况下使用方法,则使用静态导入。
类似的东西:
import static com.company.SomeClass.*;
然后我可以在另一个类中调用该类的方法,而无需创建SomeClass的实例。
一旦我使用该类中的方法,该类的构造函数是否也被调用?
例如,如果我打电话
SomeClass.doStuff();
是否在幕后为SomeClass调用了构造函数?
答案 0 :(得分:3)
是否在幕后为SomeClass调用了构造函数?
调用方法不会调用构造函数。创建类的实例时会调用构造函数。在这里,您没有实例化SomeClass
,而只是直接在类名上访问static
方法。所以,没有必要调用构造函数。
但是,如果要调用实例方法,则首先需要包含该方法的类的实例。您只能使用类的实例来访问实例方法。但在这种情况下,调用方法也不会在场景后面调用构造函数。
答案 1 :(得分:0)
static import
与你所谈论的内容没有任何关系。只需确保
import static org.junit.Assert.assertEquals
您可以使用assertEquals()
代替Assert.assertEquals()
如果您有以下签名:
public class Assert {
public static bool assertEquals()
}
除此之外:不,在使用静态方法时不要调用构造函数。请参阅@ Rohit的答案,以澄清这方面的问题。
答案 2 :(得分:0)
仅当人员new MyClass()
或Class.newInstance
时才会调用构造函数。在这种情况下,您可以编写一些静态块。