java程序,使用main和外部调用

时间:2015-09-28 20:15:01

标签: java

这可能看似简单(甚至是愚蠢的),但我想不出一个搜索我想要的好方法,即使标题可能也不完全正确。
我创建了一个标准的独立java程序,其中main()函数可以实现我想要的功能。我意识到我可能需要使用我将来可能需要的其他程序来调用此程序。所以我决定创建一个构造函数,使我可以从任何java类调用 我的问题是这种方法是否正确

public class GetUploadFiles {
    private static String[] arguments;

    /**
     * Constructor
     * expected a String[] containing the information needed
     * @param args the arguments passed
     */
   public GetUploadFiles(String[] args){
        arguments=args;   
   }

   /**
    * start the process of creating and uploading the zip file according to the arguments passed to the constructor
    * @throws IOException
    */
   public static void upload() throws IOException{
       startProcess(arguments);
       System.exit(0);
   }
   public static void main(String[] args) throws IOException {
        startProcess(args);
        System.exit(0);
    }

   /**
    * start the process 
    * @param args
    * @throws IOException
    */
   public static void startProcess(String[] args) throws IOException{
      //my code is here
      }
}//class

谢谢

2 个答案:

答案 0 :(得分:2)

我认为这是一个可以接受的解决方案。需要注意的一点是,您的上传方法不应该是静态的。我个人会推荐这样的东西:

public class GetUploadFiles {
    private static String[] arguments;

    public GetUploadFiles(String[] args){
         arguments=args;   
    }

    /**
     * start the process of creating and uploading the zip file according to the arguments passed to the constructor
     */
    public void upload() throws IOException{
        startProcess()
    }

    public static void main(String[] args) throws IOException {
        new GetUploadFiles(args).upload();
    }

    private void startProcess() throws IOException{
        //my code is here
        //Can just use arguments in here since class is no longer static.
    }
}

这有点简化了您的代码并标准化了您对该类的使用。

答案 1 :(得分:0)

这取决于您的要求,但总的来说,这是一种有效的方法,根据我的经验,它是一个常见的习惯用法,它有一个可以被Java程序导入和使用的实用程序类,但也是可以通过包含main方法从命令行使用。

您想要的一个更改,不要在上传中调用System.exit(0),否则将退出调用程序。你不需要在main中使用System.exit(0),尽管它并没有真正伤害像上传那样的东西。