繁体   English   中英

静态导入和构造函数

[英]Static Imports and Constructors

在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时才会调用构造Class.newInstance 在这种情况下,您可以编写一些静态块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM