Java コードのブロックをテストしたい場合、関数に入れずに実行する方法はありますか?
Public static void main(String[] args){
//block of code
}
また、以下のようなコードの静的ブロックを実行するにはどうすればよいですか?
static {
//block of code
}
Java コードのブロックをテストしたい場合、関数に入れずに実行する方法はありますか?
Public static void main(String[] args){
//block of code
}
また、以下のようなコードの静的ブロックを実行するにはどうすればよいですか?
static {
//block of code
}
クラスがロードまたは初期化されると、静的ブロックが実行されます。したがって、静的ブロック内のコードをテストする場合は、クラスのインスタンスを作成するのが最善の方法です。
コードをテストする場合の最良の方法は、JUnitやtestngなどのテストフレームワークを使用することです。
静的ブロックを作成できます
public class StackOverflowUser {
public static StackOverflowUser god;
static {
god = new StackOverflowUser("Jon Skeet");
}
//Stoof
}
これは、プログラムの存続期間中のある時点で(うまくいけば)何かをします。真実は、それがいつ起動するか分からず、十分に文書化されておらず、JVM から JVM に変更される可能性があるということです。そのクラスへの最初の呼び出しを行う前に確実に起動されますが、呼び出しの直前から JVM init までの間にいつでも実行される可能性があります。
コンストラクタブロックだけを作成することもできます
public class StackOverflowUser {
private static ArrayList<StackOverflowUser> users = new ArrayList<StackOverflowUser>();
{
users.add(this);
}
//Stoof
}
これは、コンストラクターが呼び出される直前にアクティブになります。基本的に、オブジェクトの作成直後ですが、初期化の前です。設定されていないため、あまりにも多くのフィールドをいじらないでください。
順序に関しては、すべてのブロックが同じように機能します。最初のブロックが呼び出されると、2 番目のブロック、3 番目のブロックなどがすべて続きます。これは Jayan が「テキスト順に」述べているとおりです。
static
ブロックは、クラスが最初にロードされるときに実行されます。したがって、他のコードが実行される前にこのブロックが実行されることが確実な DB インスタンス化などに使用できます。{...}
インスタンスを作成しようとすると単純なブロックが実行されます。ここで最初にこのブロックが呼び出され、次にnew
キーワードを含む行の下に記述されたコードが呼び出されます。public class Test3 {
public static void main(String[] args) {
Test3 obj = new Test3();
}
{
System.out.println("hussain akhtar wahid");
}
}