Bom dia a todos
Eu fiquei por muito tempo pensando se era mesmo necessário isso, pois o código Java vai funcionar do mesmo jeito em Kotlin. Mas eu vou deixar aqui para quem quiser substituir o código java desse curso por Kotlin. Todos eu testei e deram certo para mim. Se tiverem mais sugestões, correções ou melhorias, pode deixar nos comentários:
- Primeiramente, o filter do CursoService e Usuario do java pode ser substituido pelo metodo first neste caso:
código java:
código kotlin:fun buscarPorId(id: Long): Usuario { return usuarios.stream().filter({ c -> c.id == id }).findFirst().get() }
fun buscarPorID(id: Long): Usuario { return usuarios.first{it.id == id} }
- Já no filter que lanca uma exceção, podemos utilizar o firstOrNull() junto com o Elvis operator:
código java:
código kotlin:fun deletar(id: Long) { val topico = topicos.stream().filter { t -> t.id == id }.findFirst().orElseThrow{NotFoundException(notFoundMessage)} topicos = topicos.minus(topico) }
fun deletar(id:Long) { val topicoAntigo = topicos.firstOrNull { it.id == id } ?: throw NotFoundException(notFoundMessage) topicos.remove(topicoAntigo) }
- Uso de arrayList ao invés de utilizar list ou mutableList (neste caso, não sei qual seria o melhor, se alguém tiver uma sugestão, agradeço)(eu tava usando o MutableList pois a lista estava mudando a todo momento):
código java:
código kotlin:val respostas: List<Resposta> = ArrayList()
outro caso:val resposta: MutableList<Resposta> = mutableListOf(), ou val resposta: List<Resposta> = listOf(),
por:cursos = Arrays.asList(curso)
cursos = mutableListOf(curso) ou cursos = listOf(curso)