1
resposta

Static Access

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Acesso Estático Olá pessoal, bom dia. Estou com mais uma dúvida em Java. O meu programa principal e outras classes estão apontando para um problema de acesso estático. O compilador avisa que tal objeto deve ter um acesso estático e dá as opções para resolvê-lo. Por exemplo, no exemplo acima, ele sugere que se faça o seguinte:

        if (inputOption.equals("InputDatas4"))
{//           Input by hardware
            InputDatas4 readdata = new InputDatas4();
            InputDatas4.InputDatas4Procedure(); }
        else
{//                Input by archive
                InputDatas1 readdatabyfile1 = new InputDatas1();
                InputDatas1.InputDatas1Procedure(); }

Só que nestes casos eu fico com as variáveis readdata e readdatabyfile1 sem uso, a sentença "InputDatas4 readdata = new InputDatas4();", por exemplo, fica sem uso. A pergunta é qual o meio de resolver isso? O compilador não dá erro em nenhum dos casos com o acesso estático ou sem. Apenas no acesso como o da figura ele apresenta uma lâmpada e uma exclamação. A questão é isso é um erro? Se for, o que vocês sugerem que se faça: eu fazer o acima ou deixar como na figura? Obrigado e fico no aguardo de seu retorno. Edisson Sávio.

1 resposta

Oi Edisson, tudo bem?

A questão é a seguinte: como estamos trabalhando com Orientação a objetos, existe uma diferença entre aqueles atributos e métodos referentes a objetos e aqueles que se referem à própria classe, que são os estáticos. Acho que era eu quem tinha sugerido, nesse tópico, que você utilizasse um método estático em uma classe, para que fosse possível chamá-lo de dentro do método main.

Geralmente, se uma classe tem um método main, ela não é instanciada em outro lugar. Por isso, deixamos os métodos como estáticos. Porém, se ela está sendo instanciada em algum outro lugar, acredito que você deva refatorar suas classes. Caso queira continuar com a configuração atual, você pode seguir sem instanciar os objetos, excluindo as linhas como InputDatas1 readdatabyfile1 = new InputDatas1();.

Gostaria de reforçar que isso é algo que compila, mas não é a melhor prática a se fazer, o ideal seria cada classe ter todos os seus comportamentos e atributos, e ter apenas uma classe main para instanciar as outras e chamar todos os métodos. Para te auxiliar a fazer isso, recomendo que faça a Formação Java.

Espero ter contribuído! Abraços e bons estudos!