Duvida sobre REFERENCIA

Boa tarde galera. Tive um trabalho hoje, e percebi que tenho muita dificuldade no quesito REFERENCIA em java. No trabalho vinha estas linhas de codigo prontas, e eu deveria implementar…

MeuForum forum = new MeuForum();
Usuario u1 = forum.insereUsuario(“Programador1”);

Ate entao eu entendo que eu deveria criar 2 classes: MeuForum e Usuario.
Mas nao entendo o objeto(u1) da classe Usuario recebendo o metodo da classe MeuForum.
Como isso funciona?
Qual atributo do objeto(u1) está recebendo “forum.insereUsuario(“Programador1”);”??

Normalmente eu vejo as pessoas criando INSTANCIAS pra acessar os atributos … usando o NEW… e depois acessando ex: u1.(atributo)

mas sem usar NEW, nao consegui entender… quem puder dar uma ajuda agradeco!

O método insereUsuario da classe MeuForum retorna uma instância de Usuario.

Imagine que sua classe Usuario tenha uma propriedade name:

public class Usuario {
    private String name;

    public Usuario(final String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }
}

E sua classe MeuForum tenha uma lista de usuários e um método para incluir novos usuários ao fórum:

public class MeuForum {
    private List<Usuario> usuarios;

    public MeuForum() {
        this.usuarios = new ArrayList<>();
    }

    public Usuario insereUsuario(final String userName) {
        final Usuario usuario = new Usuario(userName);
        usuarios.add(usuario);
        return usuario;
    }
}

A cada chamada que você faz do método insereUsuario ele cria uma nova instância de usuário, adiciona na lista de usuários do fórum e devolve a referência para o usuário criado.