有没有一种方法可以扩展方法的功能,但不是所有的 CLI 选项 (picocli)

问题描述 投票:0回答:0

所以我正在使用 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)
   }

}
inheritance command-line-interface extends picocli
© www.soinside.com 2019 - 2024. All rights reserved.