【发布时间】:2016-03-14 01:49:14
【问题描述】:
我最近编写了一个实现 run 方法的类,然后在获取有意义的信息的同时解析视频文件。现在我创建了一个新类,它对同一个文件执行类似的操作,但在获取其他有意义的信息时使用了不同的解析方法。长话短说,我需要使用两种不同的解析方法,因为有些数据不能被一种提取,另一些不能被另一种提取。我面临的问题是两个类都实现了run方法,但是现在我需要启动新类,抓取信息,启动另一个类,抓取信息,然后比较信息并将其打印到控制台。这是我想要做的事情的要点:
public class first {
[public member variables]
....
public void run(String[] args) {
// parse the file from args and store data
}
public static void main(String[] args) {
new first().run(args); // <------ A
}
}
public class second {
[public member variables]
....
public void run(String[] args) {
// parse the file from args and store data
}
public static void main(String[] args) {
new second().run(args);
}
}
我要做的是调用第一个类的 main 方法,以便保留对该类的引用并在它完成时从中获取数据。所以我在第二堂课中添加了这样的内容:
public class second {
[public member variables]
first firstClass;
int dataFromFirst = 0;
....
public void run(String[] args) {
// parse the file from args and store data
firstClass = new first();
firstClass.main(args); // <------ B
dataFromFirst = firstClass.getSomeData(); // <------ C
}
public static void main(String[] args) {
new second().run(args);
}
}
当我开始第二类时,一切运行正常,解析器对第二类和第一类都进行了处理,但是当我尝试提取第一类找到的数据时,它为空。我认为一旦第一类的主要方法在“B”之后完成,一旦“A”超出范围,第一类的所有内容都会丢失。因此,当我尝试在“C”处获取数据时,那里什么也没有。如果是这种情况,有什么方法可以在头等舱的数据丢失之前访问它?
我对多线程程序了解不多,所以这可能只是一个我以前从未见过的非常简单的解决方案。
【问题讨论】:
-
“我要做的是调用第一个类的主要方法......”不要。我的意思是,你可以,但这并不聪明。如果你不想让其他试图理解你的程序应该做什么的人感到困惑,那么它应该只有一个 main(),并且应该只在程序启动时由系统调用。跨度>