Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida: Método Estático

No seguinte trecho o método estático de Collections acessa um objeto que acaba de ser instanciado :

    // Criando referência e atribuindo à referência um novo objeto
        ArrayList<String> aulas = new ArrayList<>();

        //Adicionando ao objeto Array o tipo de itens que ele suporta
        aulas.add(aula1);
        aulas.add(aula2);
        aulas.add(aula3);
        Collections.sort(aulas);

Por ser o método estático, o mesmo não deveria acessar apenas variáveis estáticas? Neste caso, posso considerar a referência "aulas" como uma variável estática? Por quê?

Desde já, obrigado.

2 respostas

Olá Gabriel!

A variável aulas não poderia ser acessada, caso ela não fosse passada como argumento do método, então teria que torná-la estática. É como se estivesse dando permissão pro meu método estático manipular minha variável, pois estou passando a referência do meu objeto para o método. Então ela não deve ser considerada uma variável estática.

Agora se você tentasse acessa uma variável não estática de sua classe, através de um método estático, você não iria conseguir. Pois estariam em escopos diferentes.

Espero ter ajudado, bons estudos!

solução!

Olá Gabriel, Respondendo sua pergunta: "aulas" não é uma variável estática. Explicação: Você está passando ela como referência para um método estático, tudo compila nesse caso. O que de fato não pode ocorrer é um método estático tentar acessar uma variável não estática diretamente (sem que a variável seja passada como argumento para o método estático). Código de exemplo:

class Exemplo {

    String variavelNaoEstatica;
    static String variavelEstatica;

    public static void metodoEstatico() {
        variavelEstatica = "Texto"; // Compila
        variavelNaoEstatica = "Texto"; // Não compila
    }

    public static void metodoEstatico2(String variavelNaoEstatica) {
        variavelEstatica = "Texto"; // Compila
        variavelNaoEstatica = "Texto"; // Compila
    }
}

Espero ter ajudado (: