2017-10-26 8 views
0

로 설정, 난 보통 내가 이런 식으로 선언하면, I 필드가 null인지 아닌지 확인해야합니다이POJO 필드 선언, 초기화 값 또는 내 POJO에서 널 (null)

class SampleModel { 
    var field1: String? = null 
    var field2: Int? = null 
    <more fields here> 
} 

같은 필드를 선언합니다. 이 같은

그러나 경우

:

class SampleModel { 
    var field1 = "" 
    var field2 = 0 
    <more fields here> 
} 

내가 직접 사용할 수 있습니다.

어떤 신고서를 사용해야합니까? 메모리, 성능 또는 기타 좋은 방법이 무엇입니까?

100 개의 필드가 있다고 가정 해 보겠습니다. 그런 다음 디시리얼라이저에 Moshi 또는 Gson을 사용합니다.

+0

perf의 경우 빈 문자열과 같은 값은 인 쇄되지 않으며 비용이 들지 않습니다. 코드의 경우, 수행하려는 작업과 실제로 기본값을 원할 경우에 따라 다릅니다. Null을 허용하지 않는 유형을 사용하는 생성자로 데이터 클래스를 만들고 Moshi의 KotlinJsonAdapter를 사용하여 해당 JSON 필드를 요구할 수 있습니다. –

답변

1

결국 성능 고려 사항을 넘어서는 코드의 품질입니다. 사용 사례에서 필드가 실제로 null이되지 않으면 Nullable 유형을 사용하지 않을 것입니다. 당신은 당신이 말하는 것이 불가능한 것처럼 보이는 시나리오를 수용하기 위해 자신이 여분의 일을하도록 강요합니다 (Kotlin은 다소 편하게 만듭니다).

반대쪽; 이 시나리오에서 직렬화 된 필드가 누락 된 경우 클래스의 필드에 기본값이 있으므로 필드를 즉시 catch하지 못할 수 있습니다. 이것이 문제가되어서는 안되지만 데이터 제공에 확신이 있다면.

+0

내 질문에서 어떤 부분이 불가능하다고 말하고 있습니까? – iori24

+0

가능한 경우 두 번째 옵션을 고려해야 할 이유가 전혀 없습니다. 널 (null)이 가능하면 널 (null) 입력 가능 유형이 있어야하며, 널 (null) 입력 가능 유형에 디폴트 값을 지정하면 이점이 없습니다. – dillius

1

이 두 가지 방법 중 하나를 선택할 때 IMO, 메모리 및 성능을 고려하지 않아야합니다. 그것은 당신이 수업을 어떻게 행동하게 하느냐에 달려 있습니다. 기본값 (접근 2) 또는 null (접근 1). 이 클래스의 논리를 처리해야 할 때 중요합니다.