繁体   English   中英

JAVA,JVM,多个Main方法

[英]JAVA, JVM, Multiple Main methods

我有两个类,每个类都有一个主方法,它将成为入口点的主类是RunPattern类。 问题是,在RunPattern类中调用DataCreator.serialize(fileName)时,将首先调用DataCreator类中的哪个方法? 是main()方法还是serialize()? 它与静态作用域不同吗?

    import java.io.File;
import java.io.IOException;
import java.io.Serializable;

import java.io.ObjectOutputStream;
import java.io.FileOutputStream;


public class RunPattern {

    public static void main(String args[]){``// The first main() method  

        if(!new File("data.ser").exists()){

            DataCreator.serialize("data.ser");

        }

    }

}

    class DataCreator {

    private static final String DEFAULT_FILE = "data.ser";

    public static void main(String args[]){ //  the second  main 

        String fileName;
        if(args.length == 1){
            fileName = args[0];
        }else{
            fileName = DEFAULT_FILE;
        }
        serialize(fileName);

    }

    public static void serialize(String fileName){

        try{

            serializeToFile(createData(), fileName);


        }catch(IOException exc){
            exc.printStackTrace();
        }


    }

    private static Serializable createData(){

        ToDoListCollection data = new ToDoListCollectionImpl();
        ToDoList listOne = new ToDoListImpl();
        ToDoList listTwo = new ToDoListImpl();
        ToDoList listThree = new ToDoListImpl();
        listOne.setListName("Daily Routine");
        listTwo.setListName("Programmer Hair Washing Product");
        listThree.setListName("Reading List");
        listOne.add("get up");
        listOne.add("Brew cuppa java");
        listOne.add("Read JVM Times");
        listTwo.add("Latter");
        listTwo.add("Rinse");
        listTwo.add("Repeat");
        listTwo.add("eventually throw too much conditioner");
        listThree.add("the complete of duke");
        listThree.add("how green was java");
        listThree.add("URL, sweet URL" );
        data.add(listOne);
        data.add(listTwo);
        data.add(listThree);
        return data;


    }

    public static void serializeToFile(Serializable data, String fileName) throws IOException {

        ObjectOutputStream serOut = new ObjectOutputStream(new FileOutputStream(fileName));
        serOut.writeObject(data);
        serOut.close();
    }

}

好。 如果您使用

java -cp ... RunPattern

然后将调用RunPattern类的main方法。 依次调用

DataCreator.serialize("data.ser");

只需调用DataCreator类的方法serialize DataCreator 此类中的main方法不涉及。

永远不会以这种方式调用DataCreator的主要方法。

有关在清单文件中设置main方法的一些信息
由于您通常是在IDE中进行开发,因此自动为您完成。
但是您可以在运行配置中选择哪种主方法是您的入口点。

暂无
暂无

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

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