java - 从另一个类运行后访问一个类的成员

标签 java class program-entry-point runnable

我最近编写了一个类,它实现了 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 方法都会创建自己的类实例并在本地使用它。这与线程无关,事实上,据我所知,您的程序实际上根本没有使用多线程。

要修复此问题,请不要从一个 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();
}

关于java - 从另一个类运行后访问一个类的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35978291/

相关文章:

java - 使用 GSON 将扁平化 JSON 键反序列化为正确的对象

java - 如何将 Class 值设置为 spring bean 属性?

python - 在函数内分配变量

java - 如果我在方法内初始化模型,为什么无法访问模型?

java - 读取并处理来自 Kafka 的一批消息

JQuery - 如何向每个最后一个列表项添加一个类?

java - main() 是类方法吗? ( java )

c - 为什么将 main 声明为数组编译?

java - 连续执行两个任务

python - 类中的嵌套列表