Fábrica de controlador personalizado JavaFX

Eu tenho experimentado com oFXMLLoader e usando osetControllerFactory método usando um costumeCallback<P,R> implementação.

A documentação do ORACLE diz o seguinte:

Uma implementação pode retornar um valor nulo para indicar que não cria ou não pode criar um controlador do tipo fornecido; Neste caso, o mecanismo de construção do controlador padrão será empregado pelo carregador.

O resultado que quero alcançar é que posso usar uma estrutura de injeção de dependência para criar qualquer controlador que exija parâmetros, mas deixareiFXMLLoader carregue quaisquer controladores que não necessitem de parâmetros.

Então, se eu tenho o seguinte arquivo FXML simples que usa oViewController classe que não aceita parâmetros ...

<StackPane fx:id="pane"
          xmlns:fx="http://javafx.com/fxml"
          fx:controller="my.package.ViewController">
</StackPane>

e eu uso a seguinte implementação de fábrica de controlador simples para sinalizar aoFXMLLoader que eu quero gerenciar a construção do controlador neste caso ...

loader.setControllerFactory(new Callback<Class<?>, Object>(){
    @Override
    public Object Call(Class<?> type) {
        return null; // Let the FXMLLoader handle construction...
    }
});

depois de chamar oload() método meu método Initialise noViewController A classe nunca é chamada (verifiquei isso com um ponto de interrupção).

Se eu alterar a implementação do meu controlador de fábrica para retornar uma instância doViewController classe então tudo funciona como esperado.

Alguém pode me ajudar a esclarecer minha confusão? Eu estou usando oCallback interface incorretamente ou a documentação do ORACLE está incorreta?

questionAnswers(1)

yourAnswerToTheQuestion