【问题标题】:How to reuse common extended Interface method in Java?如何重用Java中常见的扩展接口方法?
【发布时间】:2017-01-25 10:13:40
【问题描述】:

我将这三个接口作为 Fluent Interface API 的一部分(其中发生了很多方法链接):

    interface VerifierA extends VerifierC {

      VerifierA method1();
      // other methods elided
    }

    interface VerifierB extends VerifierC {
     VerifierB method1();
       // other methods elided
    }

   interface VerifierC {
   VerifierA commonMethod();
   }

通过将 commonMethod() 声明为 VerifierA 我可以链接方法 commonMethod().method1() 但不是commonMethod().method2();

如何让VerifierC 中的commonMethod() 根据需要返回VerifierA 或VerifierB?

【问题讨论】:

标签: java inheritance fluent-interface


【解决方案1】:

你可以用泛型解决它:

interface VerifierA extends VerifierC<VerifierA> {
     VerifierC<VerifierA> method1();
}

interface VerifierB extends VerifierC<VerifierB> {
    VerifierC<VerifierB> method1();
}

interface VerifierC<T> {    
    T commonMethod();
}

【讨论】:

  • +1 我打算回答同样的问题。 VerifierB#method1的返回类型不应该是VerifierC&lt;VerifierB&gt;吗?
  • 应该在接口VerifierBmethod1()&lt;VerifierB&gt;那么?
  • @Daij-Djan。谢谢。作品。您能否建议谷歌的关键字以了解更多信息? (除了一般的“Java 泛型”)
  • 假设VerifyAVerifyB 有意使用相同的方法(method1),真的需要这些接口吗? VerifierC 也可以包含 method1
  • 是的,因为链式..method1 需要根据上下文返回 A 或 B
猜你喜欢
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
  • 2010-12-01
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多