Обеспечение реализации интерфейса для использования другого класса - PullRequest
0 голосов
/ 22 июня 2011

СИТУАЦИЯ: Скажем, есть класс A и интерфейс B.

ТРЕБОВАНИЕ: Если какой-либо класс, скажем C, хочет создать объекты A и использовать их, то этот класс также должен будет реализовать интерфейс B. Есть ли способ реализовать это условие? *

ПОЧЕМУ: Теперь может возникнуть вопрос, почему я хочу сделать такую ​​вещь. Причина в том, что когда класс C создает объекты A и использует их, эти объекты вызывают определенные методы C. Я хочу объявить эти методы в интерфейсе B, чтобы C неизменно реализовывал эти методы.

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Попробуйте этот фрагмент:

public interface B {
// methods
}

public class A {
   private final B b;
   public A(B b) {
      this.b = b;
   }  
  ...
}

public class C implements B{
   // implement B's methods
   public static void main(String[] arg) {
        C c = new C();
        A a = new A(c);
   }

}
0 голосов
/ 22 июня 2011

Поскольку вы говорите, что объекты класса A будут вызывать методы на C, им придется каким-то образом сохранять ссылку на C. Сделайте эту ссылку типа B и все готово.

То есть

public class A {
  public A(B arg) {
     ....
  }
}

Тогда в C:

A a = new A(this);

Это заставит класс C реализовать интерфейс B.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...