在 运行 之后从另一个 class 访问一个 class 的成员

Access one class's members after running it from another class

我最近写了一个class,它实现了运行方法,然后在解析视频文件的同时抓取有意义的信息。现在我创建了一个新的 class,它对同一个文件执行类似的操作,但在获取其他有意义的信息时使用不同的解析方法。长话短说,我需要使用两种不同的解析方法,因为有些数据不能用一种方法提取,有些数据不能用另一种方法提取。我面临的问题是两个class都实现了运行方法,但是现在我需要启动新的class,抓取信息,启动另一个class,抓取信息,然后比较信息并打印到控制台。这是我要做的事情的要点:

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);
    }
}

我想做的是调用第一个 class 的主要方法,以便保留对 class 的引用并在完成时从中获取数据。所以我在第二个 class:

中添加了类似的内容
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);
    }
}

当我开始第二个 class 时,一切 运行 都很好,解析器对第二个和第一个 class 都起作用,但是当我尝试提取第一个 class 找到的数据为空。我认为一旦第一个 class 的主要方法在 'B' 之后完成,一旦 'A' 超出范围,第一个 class 的所有内容都会丢失。因此,当我尝试在 'C' 处获取数据时,那里什么也没有。如果是这种情况,有什么方法可以在丢失前访问第一个 class 的数据?

我对多线程程序了解不多,所以这可能只是一个我以前从未见过的非常简单的解决方案。

这不起作用的原因是每个 main 方法都会创建自己的 class 实例并在本地使用它。这与线程无关,事实上,据我所知,您的程序实际上根本没有使用多线程。

要修复它,请不要从一个 main 方法调用另一个方法。事实上,一开始甚至不要有两个 main 方法,几乎​​没有理由拥有多个。相反,只需直接调用 run,如下所示:

public void run(String[] args) {
    // parse the file from args and store data
    firstClass = new first();
    firstClass.run(args);
    dataFromFirst = firstClass.getSomeData();
}