[Resolvido] Down cast automático?

Ae pessoal, estou com um probleminha aqui que é o seguinte: uso o procedimento abaixo para chamar alguns JinternalFrames na minha aplicação:

[code] if (!verificaInternal(cadUsuarios)) {
try {

            cadUsuarios = new FrmCadUsuarios();
            desktop.add(cadUsuarios);
            cadUsuarios.preparaForm();
            configuraPermissoes(cadUsuarios, "Administração", cadUsuarios.getName());
            cadUsuarios.setVisible(true);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Ocorreu um erro durante a operação: " + e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
        }
    } else {
        cadUsuarios.toFront();
    }[/code]

Cada item de menu tem um action que executa esse procedimento e a única coisa que muda é o tipo de formulário (FrmCadUsuario, FrmCadModulos, …) e um outro parâmetro ali na chamada configuraPermissões.
Queria ter uma forma de encapsular isso aí pra não ter que colocar esse procedimento em todos actions, então pensei no seguinte:

[code] private void carregaForm(JInternalFrame frm){

    // código
    
}[/code]

Então eu passaria a subclasse pro método, mas o problema é que a subclasse tem métodos específicos que não poderiam ser executados sem a conversão. Então pergunto se alguem sabe alguma forma de fazer essa conversão automática ou algum recurso do java para executar os métodos da subclasse.

Penso que se você quer, ter a segurança no sentido de dar casting, e ter os metodos daquela classe deve usar Generics, ou instance of ou isAssignableFrom …

creio que esse post pode abrir sua visão:

Então, pelo que percebi no post o cara verifica qual tipo de classe recebida utilizando ifs, que no caso não seria uma boa idéia mas na verdade eu consegui resolver o problema da seguinte maneira:

[code] private void carregaForm(FrmCadBase frm, String modulo) {

    if (!verificaInternal(frm)) {
        try {

            desktop.add(frm);
            frm.preparaForm();
            configuraPermissoes(frm, modulo, frm.getName());
            frm.setVisible(true);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Ocorreu um erro durante a operação: " + e.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
        }
    } else {
        frm.toFront();
    }

}[/code]

Viu ali que estou passando uma classe tipo FrmCadBase? Pois é, herdei JInternalFrame nela e coloquei os métodos que são comuns a todos. Agora todos meus formulários são subtipos dessa classe.

Obrigado pela atenção!!