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

class Curso DENTRO DA class ExemploCursos GEROU ERRO DE COMPILAÇÃO

É possível criar uma classe dentro de outra? No ExemploCursos eu tentei criar a class Curso dentro da própria class ExemploCursos (posto que ela é usada internamente) mas, o compilador apresentou a seguinte mensagem: No enclosing instance of type ExemploCursos is accessible. Must qualify the allocation with an enclosing instance of type ExemploCursos (e.g. x.new A() where x is an instance of ExemploCursos).

Eis abaixo o texto completo:

 package br.com.alura.streams;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class ExemploCursos {
    class ClasseInterna {
        private String nome;
        private Integer alunos;
        public ClasseInterna(String nome, Integer alunos) {
            super();
            this.nome = nome;
            this.alunos = alunos;
        }
        public String getNome() {
            return nome;
        }
        public Integer getAlunos() {
            return alunos;
        }
    }
    public static void main(String[] args) {
        List<ClasseInterna> cursos = 
        Arrays.asList(
                new ClasseInterna("Python",45),
                new ClasseInterna("Javascript", 150),
                new ClasseInterna("Java 8", 113),
                new ClasseInterna("C", 55)
                );
        cursos.sort(Comparator.comparing(ClasseInterna::getAlunos));
        cursos.forEach(System.out::println);
    }
}
2 respostas

Ola Alberto.

O seu problema nem é sobre a inner class, mas sobre o metodo static. Quando se temos algo static, só podemos referenciar variaveis internas, e qualquer coisa externa obrigatoriamente deve ser static também.

Se tu mudar a inner classe para o abaixo, deve funcionar

static class ClasseInterna {
solução!

Funcionou rapaz. Muito obrigado.