0

我有一个可执行文件

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

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。我应该如何实现这个?我应该摆脱main我的 A.jar 中的方法吗?

4

2 回答 2

2

如果您想传递所有参数,我建议将构造函数保留为:

A(String []args) {
}

并调用:

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

在jar的主要功能中。

于 2013-07-23T16:38:21.293 回答
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);
}
于 2013-07-23T18:32:52.887 回答