Vejam minhas classes abaixo:
// Aluno:
package br.com.alura;
public class Aluno {
private String nomeAluno;
private int numeroMatricula;
public Aluno(String nomeAluno, int numeroMatricula) {
this.nomeAluno = nomeAluno;
this.numeroMatricula = numeroMatricula;
}
public String getNomeAluno() {
return nomeAluno;
}
public int getNumeroMatricula() {
return numeroMatricula;
}
public String toString() {
return "[Aluno: " + getNomeAluno() + "Matricula: " + getNumeroMatricula() + "]\n";
}
}
// Curso:
package br.com.alura;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
public class Curso {
private String nome;
private String instrutor;
private List<Aula> aulas = new LinkedList<>();
private Set<Aluno> alunosDoCurso = new HashSet<>();
public Curso(String nome, String instrutor) {
this.nome = nome;
this.instrutor = instrutor;
}
public String getNome() {
return nome;
}
public String getInstrutor() {
return instrutor;
}
public void adiciona(Aula aula) {
this.aulas.add(aula);
}
public List<Aula> getAulas() {
return Collections.unmodifiableList(aulas);
}
public int getTempoTotal() {
return this.aulas.stream().mapToInt(Aula::getTempo).sum();
}
public String toString() {
return "[Curso:" + getNome() + ", " + "tempo total:" + getTempoTotal() + ", aulas:" + this.aulas + "]";
}
public void matricula(Aluno mat) {
this.alunosDoCurso.add(mat);
}
public Set<Aluno> getAlunos() {
return Collections.unmodifiableSet(alunosDoCurso);
}
public boolean estaMatriculado(Aluno aluno) {
return this.alunosDoCurso.contains(aluno);
}
@Override
public boolean equals(Object obj) {
Aluno outroAluno = (Aluno) obj;
return this.nomeAluno.equals(outroAluno.nomeAluno);//Aqui da erro dizendo o seguinte: A variavel nomeAluno não é visível, e realmente ela é private. Mas no video eu nao vi o professor trabalhar com o setNome para acessar essa variável.
}
@Override
public int hashCode() {
return this.nomeAluno.hashCode();
}
}
Por esse motivo ele não compila.