所以我正在使用 picocli,我试图在一个项目中概括我的一些命令。
我有两个共享一些方法的类,其中一个是另一个的扩展。他们都有 CLI 的选项,但是子类只需要其中的一些选项,所以这就是问题所在。
当我扩展类 picocli 时也采用超类中所有声明的选项,有没有办法我可以选择我想要的选项?
我已经尝试阅读文档中的子类化和混合类 here 但我似乎不知道如何选择我想从超类继承的选项。还有继承范围here,我尝试将其添加到超类选项中,例如:
@Option(name = "bar", required = yes, scope = ScopeType.LOCAL)
但是当我在CMD中运行B类时,它仍然需要我传递bar选项参数。
@Command(name = "cmd1")
class A implements Callable<Integer> {
@Option(name = "foo", required = yes)
protected String var1;
@Option(name = "bar", required = yes)
private String var2;
Integer call(){}
void extraMethodIWantToExtend1(){}
void extraMethodIWantToExtend2(){}
}
然后我们有 B 类,我希望它扩展 A 类的方法,但我只需要 A 类的 var1 而不是 var2。
@Command(name = "cmd2")
class B extends A implements Callable<Integer> {
@Option(name = "extraOption", required = yes)
private String var3;
//I still want to make use of the var1 from the superclass but not var2
Integer call(){
System.out.println(var1)
}
}