静态导入和构造函数

在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 。 在这种情况下你可以写一些静态块。

链接地址: http://www.djcxy.com/p/15415.html

上一篇: Static Imports and Constructors

下一篇: How to handle C++ internal data structure in R in order to allow save/load?