@Test
fun saveUser() {
//given
val request = UserCreateRequest("솜사탕", null)
//when
userService.saveUser(request)
//then
val results = userRepository.findAll()
assertThat(results).hasSize(1)
assertThat(results[0].name).isEqualTo("솜사탕")
assertThat(results[0].age).isNull()
}
results[0].age must not be null
java.lang.NullPointerException: results[0].age must not be null
플랫폼 타입때문에 에러가 나는거다.
코틀린에서 .age
라고 했을 때 자바에 있는 getAge
를 호출한다.
자바에서 Integer
라고 값을 줬는데 코틀리네서는 이 int가 null이 들어갈 수 있는 정수인지 null이 들어갈 수 없는
정수인지 판단을 못한다.
String도 마찬가지로 null 여부를 판단하지 못한다.
그래서 일단은 null이 아니겠거니 하고 값을 가져오는데 null이어서 exception이 난것이다.
@NotNull
public String getName() {
return name;
}
@Nullable
public Integer getAge() {
return age;
}