如何将java参数编码到我的main / constructors中?

时间:2013-07-23 16:34:07

标签: java executable

我有一个可执行文件

所以这两个构造函数看起来像这样:

public A()
{
//code
}

public A(String foo)
{
//more code here
}

主要看起来像这样:

A foo = new A();

当然,只执行第一个构造函数。

在B.jar,我这样称呼它:

rt.exec("java -jar pathToA.jar");

在另一个名为“B.jar”的可执行jar中,我希望能够使用任一构造函数执行A.jar。我该如何实现呢?我应该摆脱我的A.jar中的main方法吗?

2 个答案:

答案 0 :(得分:2)

如果你想传递所有的args,我建议保持一个构造函数:

A(String []args) {
}

并致电:

public static void main(String []args) {
 new A(args);
}

在jar中的main函数中。

答案 1 :(得分:0)

您也可以链接两个构造函数。请参阅构造函数链接: http://www.javabeginner.com/learn-java/java-constructors

public A()
{
  this("default str", 0);
}

public A(String foo, int bar)
{
  // more code here
}

(我认为这比String [] args更好,因为你可以很容易地混淆args的顺序,而且你只能处理字符串。(要处理不同类型你可以使用Object [] args,但是这甚至不太可维护,因为它甚至不是类型安全的。)而且你想控制参数的数量。)

注意,通常有人想要以另一种方式进行链接,因此参数化构造函数会调用参数较少的构造函数。

public A()
{
  // more code here
}

public A(String foo)
{
  this.setFoo(foo);
  // more code here
}

public A(String foo, int bar)
{
  this(foo);
  this.setBar(bar);
}

public A(String foo, int bar, float extra)
{
  this(foo, bar);
  this.setExtra(extra);
}