Wymóg implementacji interfejsu

0

W jednej z książek zdarza się, że np. aby dana metoda działała, klasa musi implementować jakiś tam interfejs.

  1. Co się stanie, jeżeli podamy do metody klasę, która nie implementuje interfejsu?
  2. W jaki sposób wykonać metodę, która wymaga danego interfejsu?
0

Jeśli masz metodę typu:
JakiśTyp metoda(JakiśInterfejs obiekt)
To musisz tam podać instancję klasy implementującej interfejs JakiśInterfejs. Inaczej nie zadziała i już :) A dokładniej to nawet się nie skompiluje.

0

Wpadłem na taki pomysł:

interface Inter {
 void reset();
}
public class KlasaResetujaca {
 //metoda wymaga obiektu implementującego Inter
 public void runClass(Object ob) {
  Class[] interfaces = ob.class.getInterfaces();
  boolean haveInter = false;
  for (int i = 0; i < interfaces.lenght; i++) {
   if (interfaces[i].equals(Inter.class) {
     haveInter = true;
   }
  }
  if (haveInter) {
    //kod, gdy klasa implementuje interfejs Inter
  }
 }
}

Wiem, że strasznie namieszane, ale czy zmierzam w dobrym kierunku?

2

Lepiej tak:

final boolean haveInter = ob instanceof Inter;
0

I o taką odpowiedź mi chodziło, dziękuję bardzo.

0

@norbi452 ale po co? Nie prościej jako argumentu tej metody użyć interfejsu a nie Object?

0

O.o to tak też się da? Dzięki, nowych rzeczy się dowiaduję.

1

Albo książka jest kiepska, albo się nie przykładasz :]

1 użytkowników online, w tym zalogowanych: 0, gości: 1