Eu faço um pouco diferente. Eu não crio uma referência para cada objeto (sendo list ou set), eu simplesmente o instancio diretamente. Exemplo:
Curso java = new Curso("Curso de Java Collections", "Paulo Silveira");
java.adiciona(new Aulas("ArrayList", 15));
java.matricula(new Aluno("Felipe Silva", 1234));
Nesse caso fica mais complicado porque não tem referência para comparar os objetos e para Set é mais difícil de fazer buscas por não ter o método get() para passar posições, então eu tive que criar o método estaMatriculado um pouco diferente:
public boolean estaMatriculado(String nome) {
for(Aluno al : alunos) {
if(al.getNome()==nome) {
return true;
}
}
return false;
}
Assim eu procuro por String e não passando referência.
A minha pergunta é: é válido o meu método?