javac "uses unchecked oder unsichere Vorgänge", wenn der Typ angegeben wird
Folgenden code:
public void addGrillaListener(Stage stageToClose,Grilla listener)
{
GrillaHandler<WindowEvent> handy = new GrillaHandler<>(listener);
if(stageToClose!=null)
{
stageToClose.addEventHandler(WindowEvent.WINDOW_HIDDEN,handy);
}
}
veranlasst den compiler, um zu zeigen, dass Nachricht. Wie kann ich es vermeiden?
Extra info:
- Grilla ist eine Bühne-Schnittstelle
- GrillaHandler ist ein Event-Handler Unterklasse, die es braucht, Grilla, als constructor-parameter
- Mit dem JDK 7, GrillaHandler<> erlaubt ist
- Die compiler-Meldung ist eher unespecific - es besagt, dass diese Methode verwendet, deaktiviert oder unsichere Vorgänge
- Bühne ist eine Klasse von oracle, es ist ein Teil der javafx -
GrillaHandler:
public class GrillaHandler<T> implements EventHandler {
private Grilla win;
public GrillaHandler(Grilla win) {
this.win=win;
}
@Override
public void handle(Event t) {
win.loadTable();
}
}
Grilla:
public interface Grilla {
public void loadTable();
}
- Zeigt die Meldung an, welche Linie?
- Für mich scheint es ein problem mit dem parameter
Stage stageToClose
. Wie es aussieht wird das ein parametrisierter Typ, so dass es später akzeptieren Ereignishandler von einem bestimmten Typ. Aber es ist nicht ersichtlich in deinem code. Kannst du die Definitionen vonStage
undGrilla
? - GrillaHandler<WindowEvent> handy = neue GrillaHandler<WindowEvent>(listener);
- Es ist nicht mehr notwendig, zu erklären, die Art der Initialisierung, wenn Ihr die gleichen wie die Erklärung. Ich denke, das von JDK 7 ab.
- Fügen Sie das @SuppressWarnings("unchecked") - annotation der Methode und die Meldung geht Weg.
- wer sagt Alvaro ist mit dem JDK 7?
- Ja, lasst uns einfach unterdrückt alle Warnungen, ohne diese zu untersuchen.
- Wenn er nicht aus, er würde immer zu einem compiler-Fehler, keine Warnung.
- Danke für die Erklärung. Also, was ist die Linie die Warnung Auftritt auf?
- Ich natürlich wusste er, warum der compiler Ausgänge der Botschaft, und er wollte, um Sie zu unterdrücken sowieso. So viel für eine Einstellung. Wir definitelly brauchen mehr code zu analysieren, der. Wir brauchen die Bühne, Grilla und GrillaHandler Definitionen.
- Was ist
WindowEvent.WINDOW_HIDDEN
? Auf der Grundlage deraddEventHandler
Dokumentation, es muss einEventType
, die einen parametrisierten Typ istWindowEvent.WINDOW_HIDDEN
eine raw-Typ? - Wenn dies JavaFx, nach javadocs es ist
EventType<WindowEvent>
, nicht ich? - Ja, du hast Recht. Also der Aufruf sieht gut aus...
- Ich denke, das problem ist, dass
javafx.EventHandler
ist ein parametrisierter Typ und kein Typ als argument in die Erklärung derGrillaHandler
Du musst angemeldet sein, um einen Kommentar abzugeben.
Code zu ändern
JavaFX EventHandler ist ein paremeterized geben. Sie vermissen, dass Sie in Ihrer Erklärung der
GrillaHandler
. Sie sind gezwungen, um eine Typ-argument in Ihrer Klasse Erklärung oder deklarieren der Typ-parameter, wie Sie scheinen, erfordern, wie pro Ihre Erklärung.