0

如果我只想测试一段 Java 代码,有没有办法在不将其放入函数的情况下运行它?

Public static void main(String[] args){
//block of code
}

另外,如何执行下面的静态代码块?

static {
//block of code
}
4

5 回答 5

1

您可以创建静态块

public class StackOverflowUser {
    public static StackOverflowUser god;
    static {
        god = new StackOverflowUser("Jon Skeet");
    }
    //Stoof
}

这将在程序生命周期的某个时候(希望)做一些事情。事实是,不知道它何时触发,并且没有很好的文档记录,并且可能会从 JVM 更改为 JVM。它肯定会在您第一次调用该类之前触发,但它可以在您调用之前和 JVM 初始化之间的任何时间执行。

您也可以只创建构造函数块

public class StackOverflowUser {
    private static ArrayList<StackOverflowUser> users = new ArrayList<StackOverflowUser>();
    {
        users.add(this);
    }
    //Stoof
}

这将在调用构造函数之前激活,就在之前。基本上,在对象创建之后,但在初始化之前。不要尝试弄乱太多字段,因为它们不会被设置。

就顺序而言,所有块的工作方式相同。一旦第一个块被调用,第二个块、第三个块等都将随之而来,正如 Jayan 所说的“按文本顺序”。

于 2013-01-31T06:52:21.750 回答
1

一旦类被加载或初始化,静态块就会被执行。所以如果你想测试静态块内部的代码,最好的方法是创建一个类的实例。

如果你想测试你的代码,最好的方法是使用一些测试框架,比如 JUnit 或 testng。

于 2013-01-31T07:19:02.133 回答
0
  1. static块将在您的类首先被加载时执行。因此它可用于数据库实例化等,您可以确定此块将在您的其他代码运行之前执行。
  2. {...}当您尝试创建实例时,简单块将运行。new这里首先将调用此块,然后将调用包含关键字的行下方编写的代码。
于 2013-01-31T07:13:58.210 回答
0
public class Test3 {
    public static void main(String[] args) {
        Test3 obj = new Test3();

    }   
    {
        System.out.println("hussain akhtar wahid");
    }
}
于 2013-01-31T07:40:35.877 回答
0
    public class StaticBlockTest {

    /*
     * Some Code Goes Here 
     * 
     * */
    static {

        System.out.println(" Static Block Executed ");
        System.exit(0);
    }


}

静态块无需 main 方法即可执行,您需要传递 System.exit(0) 来终止当前正在运行的 Java 虚拟机以退出程序执行。

于 2014-03-05T12:23:41.883 回答