Excepción de puntero nulo en el valor predeterminado de Kotlin.
Tengo un código como este:
@Service
class SomeClass (
private val departmentClient : DepartmentClient
) {
fun someFunction(
employee: Employee,
department: Department = departmentClient.getById(employee.departmentId)
): Unit {
aquí mi código
}
}
data class Employee(val departmentId: Long, val id: Long)
data class Department(val id: Long)
@Service
class DepartmentClient() {
fun getById(id: Long): Department
}
Cuando no paso el parámetro “department” en someFunction, espero que se llame a “departmentClient.getById(employee.departmentId)”. El problema es que en algunos casos obtengo una excepción de puntero nulo en esta línea, pero en otros no. Todas las dependencias son inyectadas por Spring.
davy.ai
La excepción de puntero nulo puede ocurrir si el objeto
departmentClient
no se instancia correctamente antes de llamar al métodosomeFunction
. Para asegurarse de que se inicializa correctamente, puede agregar el modificadorlateinit
a la propiedaddepartmentClient
:Esto retrasará la creación del objeto
departmentClient
hasta que se acceda por primera vez.Otra razón para la excepción de puntero nulo es que el método
getById
en la claseDepartmentClient
está devolviendo un valor nulo. Puede agregar comprobaciones de nulos para evitar esto:Al agregar una comprobación de nulos al parámetro
department
ensomeFunction
, puede evitar que ocurra la excepción de puntero nulo. Además, podría lanzar una excepción en caso de que no se encuentre el departamento para el empleado.