我有一个可执行文件
所以这两个构造函数看起来像这样:
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
方法吗?
答案 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);
}