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()コンストラクターは、 orを実行する場合にのみ呼び出されClass.newInstanceます。この場合、いくつかの静的ブロックを作成できます。

于 2013-08-25T20:16:39.907 に答える