DarthShader
Erfahrenes Mitglied
Hallo,
ich habe eine eigene Annotation, in dem ich einen event Type als Parameter setzen möchte. Das ganze sieht so aus:
Dabei ist zu beachten, dass "MouseReleasedEvent" von "SwingEvent" erbt, und "SwingEvent" erbt von "UIEvent", also:
Es wird dieser Compilerfehler angezeigt:
Wenn ich das "default MouseReleasedEvent.class" entferne, so kompiliert der Code.
Ich hatte jetzt naiverweise gedacht, dass ich den Typ so beschränken kann, dass eben nur "UIEvent"s und davon abgeleitete Klassen zurückgegeben/gesetzt werden können.
Kann mir jemand erklären, warum die obige Fehlermeldung auftaucht?
Vielen Dank für Eure Hilfe!
ich habe eine eigene Annotation, in dem ich einen event Type als Parameter setzen möchte. Das ganze sieht so aus:
Java:
@Target( ElementType.METHOD )
@Retention( RetentionPolicy.RUNTIME )
public @interface MyAnnotation
{
Class< ? extends UIEvent > eventType() default MouseReleasedEvent.class;
}
Dabei ist zu beachten, dass "MouseReleasedEvent" von "SwingEvent" erbt, und "SwingEvent" erbt von "UIEvent", also:
Code:
EventObject
UIEvent
SwingEvent
MouseReleasedEvent
Es wird dieser Compilerfehler angezeigt:
Java:
Type mismatch: cannot convert from Class<MouseReleasedEvent> to Class<? extends UIEvent>
Wenn ich das "default MouseReleasedEvent.class" entferne, so kompiliert der Code.
Ich hatte jetzt naiverweise gedacht, dass ich den Typ so beschränken kann, dass eben nur "UIEvent"s und davon abgeleitete Klassen zurückgegeben/gesetzt werden können.
Kann mir jemand erklären, warum die obige Fehlermeldung auftaucht?
Vielen Dank für Eure Hilfe!