Hallo. Ich war lange nicht mehr im Java-Forum. Ich habe einen komischen Compiler-Fehler den ich nicht erklären kann. Der Code ist hier:
Der Fehler kommt aus Zeile 4:
Das komische ist, dass der Fehler nur in dieser Zeile erscheint.
JavafxPaneErrorSetupControllerMessage ist definiert als:
Wenn ich die Methode ändere und Object als Parameter verwende, dann ist der Error weg:
Mein Problem ist, dass ich diesen Pattern überall verwende und nirgendwo Fehler erscheinen.
Zum Beispiel hier:
Den gesamten Code kann man sich hier runterladen:
Java:
protected BehaviorBuilder<Message> getStartBehaviorBuilder() {
return Behaviors.receive(Message.class)//
.onMessage(JavafxPaneInitialStateMessage.class, this::onInitialState)//
.onMessage(JavafxPaneErrorSetupControllerMessage.class, this::onErrorState)//
.onMessage(Message.class, this::stashOtherCommand)//
;
}
Der Fehler kommt aus Zeile 4:
Code:
incompatible types: java.lang.Object cannot be converted to com.anrisoftware.anlopencl.jmeapp.actors.AbstractJavafxPaneActor.JavafxPaneErrorSetupControllerMessage
Das komische ist, dass der Fehler nur in dieser Zeile erscheint.
JavafxPaneErrorSetupControllerMessage ist definiert als:
Java:
@RequiredArgsConstructor
@ToString(callSuper = true)
protected static class JavafxPaneErrorSetupControllerMessage extends Message {
public final ActorContext<Message> context;
public final Throwable cause;
}
Java:
@ToString
public static class Message {
}
Wenn ich die Methode ändere und Object als Parameter verwende, dann ist der Error weg:
Java:
private Behavior<Message> onErrorState(Object m) {
var mm = (JavafxPaneErrorSetupControllerMessage) m;
log.debug("onErrorState {}", mm);
log.error("Error setup controller", mm.cause);
return Behaviors.stopped();
}
Mein Problem ist, dass ich diesen Pattern überall verwende und nirgendwo Fehler erscheinen.
Zum Beispiel hier:
Java:
@Override
protected BehaviorBuilder<Message> doActivate(JavafxPaneInitialStateMessage<AboutDialogController> m) {
log.debug("doActivate {}", m);
runFxThread(() -> {
controller.updateLocale(gsp.get(), appImages, appTexts);
controller.initializeListeners(actor.get(), onp.get());
pane.setPrefSize(camera.getWidth() - 100, camera.getHeight() - 100);
});
tellLocalizeControlsSelf(gsp.get());
return Behaviors.receive(Message.class)//
.onMessage(LocalizeControlsMessage.class, this::onLocalizeControls)//
.onMessage(AboutDialogOpenMessage.class, this::onAboutDialogOpenMessage)//
.onMessage(AboutDialogCloseTriggeredMessage.class, this::onAboutDialogCloseTriggered)//
;
}
Den gesamten Code kann man sich hier runterladen:
anl-opencl/anlopencl-jme3-app-javafx/src/main/java/com/anrisoftware/anlopencl/jmeapp/actors/AbstractJavafxPaneActor.java at e98e3965d0b1e286c28ce7d665a0ade99c923765 · devent/anl-opencl
The project is a rework of the Accidental-Noise Josua Tippetts' C++ library in OpenCL. - devent/anl-opencl
github.com