有没有办法在java中执行代码块而不将其放在静态main方法中

时间:2013-01-31 06:41:11

标签: java

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

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

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

static {
//block of code
}

5 个答案:

答案 0 :(得分: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在文本顺序中所说的那样#34;。

答案 1 :(得分:1)

加载或初始化类后,将执行静态块。因此,如果要测试静态块内的代码,最好的方法是创建类的实例。

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

答案 2 :(得分:0)

    首先加载类时将执行
  1. static块。因此,它可用于数据库实例化等,您可以确保在其他代码运行之前执行此块。
  2. 当您尝试创建实例时,将运行简单块{...}。 首先调用此块,然后调用包含new关键字的行下面的代码。

答案 3 :(得分:0)

public class Test3 {
    public static void main(String[] args) {
        Test3 obj = new Test3();

    }   
    {
        System.out.println("hussain akhtar wahid");
    }
}

答案 4 :(得分:0)

    public class StaticBlockTest {

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

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


}

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