Rzutowanie na interface

0

Mam dostepny literal interface'u i chciałbym utworzona klasę zrzutować na ten interface.

Action act = new Action(ActionListener.class);

// Wypisuje 'interface java.awt.event.ActionListener'
System.out.println(act.getInterface().toString());

// Wypisuje ActionListener
if(act.getInterface() == ActionListener.class) {
	System.out.println("ActionListener");
}

Jak teraz jakiś obiekt zrzutować na ten interface.?

EventListener el = k.get();

// Takie dziala
ActionListener al = (ActionListener)el;

// To nie ;/
ActionListener al2 = act.getInterface().cast(el);
0

Skąd bierzesz referencję "k"?
Interfejs, to tylko reprezentacja, którą musi spełniać obiekt do którego referencję masz. Jedyny wyjątek kiedy referencja nie może spełnić wymagań obsługi metod referencji, to przypisanie jej null.
Wystarczy pamiętać, że interfejs to tylko rama.
Poza tym zamiast używać operatora równości dla literałów klas, posługuj się instanceof lub metodą isInstance(). W przypadku porównywania klasy czy literały muszą być identyczne, a przecież obiekt klasy i interfejs zasadniczo nie mogą być identyczne.

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