Evet, mümkün. Her birinin altında, argümana dayalı olarak istenen sınıfı/yöntemi çalıştıran bir ana yöntemle başka bir sınıf ekleyebilirsiniz.
E.g.
public static void main(String... args) {
if ("foo".equals(args[0])) {
Foo.main(args);
} else if ("bar".equals(args[0])) {
Bar.main(args);
}
}
sen olarak kullanabileceğiniz
aşağıdaki (kendin gibi args.length
ve benzeri bariz kontrolleri eklemeyi unutmayın): iyi tasarlanmış olursa
java -jar YourJar.jar foo
, bu ancak can Diğer sınıfların main()
yöntemini gereksiz hale getirin. Örneğin.
private static Map<String, Action> actions = new HashMap<String, Action>();
static {
actions.put("foo", new Foo());
actions.put("bar", new Bar());
}
public static void main(String... args) {
actions.get(args[0]).execute();
}
: soyut To
bu daha, bunları bir
void execute()
bazıAction
arabirimini uygulayan ve birMap
bunların ele alalım için düşünebiliriz (/ else blokları ise kurtulmak için) Bu, özel bir sınıf yükleyicisine yükleme yapmakla yükümlü oldukları için Eclipse Runnable dışa aktarma işlemiyle çalışmaz. –Sınıf Yolu özniteliğiniz varsa bu işe yaramaz –