Problema com instanciação

Pessoal agora estou com o senguinte problema eu tenho um metodo statico prara contrele de instanciamente de JinternalFrame para nao possibilitar abertura de 2 ou mais veses a mesma janela
porem como meu construtor do JInternalFrame tem referencia o metodo esta dando erro por que instancia sem referencia não faço a minima ideia de como resolver isso?

public static CadastrarContas getInstancia() {
        if (telaCadastro == null) {
            telaCadastro = new CadastrarContas();=====> AQUI NESSE INSTANCIAMENTO ESTA DANDO ERRO!
                   }
        return telaCadastro;

    }
    

    /**
     * Creates new form CadastrarContas
     * @param dados
     */
    public CadastrarContas(TelaCFPbeta dados) {
        initComponents();
        getdados = dados;
        
    }

mais uma vez mexi testei ate conseguir resolver e ta ai resolvi fiz uma atribuição no metodo que checa o instanciamento do objeto ficou dessa forma agora resolvido

public class CadastrarContas extends javax.swing.JInternalFrame {

public static TelaCFPbeta getdados;
private static CadastrarContas telaCadastro;

/**
 * Creates new form CadastrarContas
 *
 * @param dados
 */
public CadastrarContas(TelaCFPbeta dados) {
    initComponents();
    getdados = dados;
}

public static CadastrarContas getInstancia(TelaCFPbeta dados) {  <=== AQUI FIZ A ATRIBUIÇÃO NÃO SEI SE É ASSIM QUE SE CHAMA MAIS EM FIM RESOLVIDO...
    if (telaCadastro == null) {
        getdados = dados;
        telaCadastro = new CadastrarContas(dados);
    }
    return telaCadastro;
}
public static TelaCFPbeta getdados; // essa variável não deve ser estática
private static CadastrarContas telaCadastro;

// esse construtor deveria ser private, já que você instancia a classe através de um outro método
public CadastrarContas(TelaCFPbeta dados) {
    initComponents();
    getdados = dados; // é aqui que você faz a atribuição
}

public static CadastrarContas getInstancia(TelaCFPbeta dados) { // aqui não fez atribuição nenhuma, isso é só um parâmetro
    if (telaCadastro == null) {
        getdados = dados; // essa linha é inútil, pois o parâmetro é passado ao construtor, na próxima linha
        telaCadastro = new CadastrarContas(dados);
    }
    return telaCadastro;
}
1 curtida

starrosk muito obrigado amigo e perdão pelas minhas baberagem é que como disse estou iniciando ainda faz uns 2 meses que decidi me dedicar ao java então agradeço mesmo pelas melhorias que vc fez pra mim ai vlw um abraço!!!

Só corrigindo um pequeno detalhe.

Use instanciação e não instanciamento

1 curtida