【问题标题】:Java: Call a main method from a main method in another classJava:从另一个类中的主方法调用主方法
【发布时间】:2016-01-08 10:10:40
【问题描述】:

我在同一个包中有一组 Java 文件,每个文件都有主要方法。我现在希望从另一个类逐步调用每个类的主要方法。 Splitter.java 就是一个这样的类文件。这是它的代码。

public static void main(String[] args) throws IOException {

    InputStream modelIn = new FileInputStream("C:\\Program Files\\Java\\jre7\\bin\\en-sent.bin");
    FileInputStream fin = new FileInputStream("C:\\Users\\dell\\Desktop\\input.txt");
    DataInputStream in = new DataInputStream(fin);
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    String strLine = br.readLine();
    System.out.println(strLine);

    try {
        SentenceModel model = new SentenceModel(modelIn);
        SentenceDetectorME sentenceDetector = new SentenceDetectorME(model);
        String sentences[] = sentenceDetector.sentDetect(strLine);

        System.out.println(sentences.length);
        for (int i = 0; i < sentences.length; i++) {
            System.out.println(sentences[i]);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (modelIn != null) {
            try {
                modelIn.close();
            } catch (IOException e) {
            }
        }
        fin.close();
    }
}

我现在希望在 main 方法中的 AllMethods.java 中调用它。 那么我该怎么做呢?还有其他几个类文件的主要方法为IOException,必须在AllMethods.java 文件中调用。

更新 -

我有具有IOException 的主要方法以及不具有IOEXception 的主要方法,它们必须在AllMethods.java 中调用。

【问题讨论】:

  • 抛出异常并没有太大变化,您只需将 throws IOException 添加到您调用的任何方法(或捕获/处理异常)

标签: java eclipse methods java-8 main


【解决方案1】:

在Main.java中,main方法应该添加throws Exception,如下图:

package com.company;

import java.io.FileNotFoundException;

public class Main extends makeFile {

    public static void main(String[] args) throws FileNotFoundException {

        makeFile callMakeFile = new makeFile();

        makeFile.main(args);
        // cannot figure out how to call the main method from the makeFile class here...
    }
}

【讨论】:

    【解决方案2】:

    首先,您可能应该做的是重构代码,以便每个主方法调用其他方法,然后 AllMethods 调用这些新方法。我可以想象在某些情况下,如果您只是尝试编写一些测试代码,但通常您不想直接调用 main 方法,那么它可能会很有用。只是更难阅读。

    如果你想尝试一下,这很容易,你只需像调用其他静态方法一样调用 main 方法。我曾经在大学写过一个 Web 服务器,为了处理身份验证,我递归了 main 方法。我想我得到一个 C 是因为它是不可读的代码,但我写得很开心。

    class AllMethods {
        public void callsMain() {
            String[] args = new String[0];
            Splitter.main(args);
        }
    }
    

    【讨论】:

      【解决方案3】:

      你可以这样做。 Main 方法也和其他静态方法一样

      public static void main(String[] args) throws IOException {
       ....// do all the stuff
      
      
      Splitter.main(args); // or null if no args you need
      }
      

      【讨论】:

      • 我的主要方法有 IOException 而没有 IOException。我希望它们都在 AllMethods.java 中被调用。我可以将您的建议用于没有 IOException 的主要方法吗?
      • 没有。如果方法方法抛出该异常,它应该被调用者捕获。我的意思是你需要用try-catch 包围你的电话,并且需要在失败时采取必要的步骤。
      • 那么我应该如何调用 AllMethods.java 中的所有这些主要方法?
      • @DakshilaKamalsooriya 再次阅读try-catch。你会明白的
      猜你喜欢
      • 2014-11-01
      • 2016-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多