【问题标题】:Methods implemented in inner class for an outer class implementing interface外部类实现接口的内部类中实现的方法
【发布时间】:2021-08-16 07:04:52
【问题描述】:

假设我们有一个接口:

public interface SomeInterface {
  public void A();
  public void B();
}

我们有一个班级:

public class SomeClass {
  public void A(){...};

  private class SomeInnerClass {
    public void B(){...};
  }
}

而且我需要 SomeClass 来实现 SomeInterface,但是 SomeClass 中所需的方法“B”是在内部类中实现的。我该怎么做才能让 SomeClass 成功实现 SomeInterface?

【问题讨论】:

  • 听起来像XY problem。为什么要这样做?
  • 你不能。您必须在您声称的类中实现接口方法。您可以将它们实现为内部类的永久实例的委托,但究竟有什么意义呢?

标签: java interface inner-classes


【解决方案1】:

SomeClass 内部创建SomeInnerClass 的实例并将其实现用于B() 方法。

这样:

public class SomeClass {
  private SomeInnerClass someInnerClass = new SomeInnerClass();

  public void A(){
      ...                    // self implementation
  };

  public void B(){
      someInnerClass.B();    // Inner class implementation
  };

  private class SomeInnerClass {
    public void B(){...};
  }
}

【讨论】:

    最近更新 更多