У меня есть два класса, где каждый класс имеет один основной метод, основным классом, где он станет точкой входа, является класс RunPattern. Вопрос в том, какой метод в классе DataCreator будет вызываться первым, когда DataCreator.serialize (имя_файла) вызывается в классе RunPattern? это метод main() или serialize()? Разве это отличается от статической области?JAVA, JVM, Несколько основных методов
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();
}
}
вы должны сообщить себе, что [статические] (https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html) означает, что у вас есть основное недоразумение здесь. – SomeJavaGuy
Я отредактировал тег, я знаю, это не имеет никакого отношения к моему вопросу здесь – edgards
Когда вы вызываете 'DataCreator.serialize', он вызывает метод' serialize' в 'DataCreator', ничего магического не происходит, чтобы вызвать' main() ' –