Para melhorar o código é possível usar o MutableList do kotlin, dessa forma:
@Service
class TopicoService(
private var topicos: MutableList<Topico> = ArrayList(), // Aplicar como MutableList para ter o método add
private val cursoService: CursoService,
private val usuarioService: UsuarioService
) {
fun listar(): List<Topico> { // pode devolver como list mesmo, afinal vai ser apenas para leitura
return topicos
}
fun buscarPorId(id: Long): Topico {
return topicos.first { topico -> topico.id == id }
}
fun cadastrar(dto: NovoTopicoDto) {
topicos.add(
Topico(
id = topicos.size.toLong() + 1,
titulo = dto.titulo,
mensagem = dto.mensagem,
curso = cursoService.buscarPorId(dto.idCurso),
autor = usuarioService.buscarPorId(dto.idAutor)
)
)
}
}