GSON은 왜 getter / setter가 아닌 필드를 사용합니까?
GSON이 필드 (개인, 공개, 보호) 만 사용하는 이유는 무엇 입니까? GSON에게 게터와 세터 만 사용하도록 지시하는 방법이 있습니까?
일반적으로 객체를 직렬화 / 역 직렬화 할 때 객체 상태의 정확한 사본이 생성됩니다. 따라서 일반적으로 OO 디자인에서 일반적으로 원하는 캡슐화를 우회하려고합니다. 캡슐화를 우회하지 않으면 역 직렬화 후 직렬화 이전과 똑같은 상태를 갖는 개체로 끝나지 않을 수 있습니다. 또한 특정 속성에 대한 setter를 제공하지 않으려는 경우를 고려하십시오. getter 및 setter를 통해 작업하는 경우 직렬화 / 역 직렬화는 어떻게 작동해야합니까?
GSON에게 게터와 세터 만 사용하도록 지시하는 방법이 있습니까?
아직.
에서 설계 문서 :
속성을 지원하는 좋은 주장도 여기에 있습니다. Json 필드를 표시하기위한 대체 매핑으로 속성을 지원하기 위해 후자의 버전에서 Gson을 향상시킬 계획입니다. 현재 Gson은 필드 기반입니다.
Gson을 패치 하여 getter 를 사용할 수 있습니다 .
이것이 우리 앱에서 어떻게 작동하는지에 대한 모호한 개요는 우리가 많은 TypeAdapter구현을 가지고 있다는 것입니다. 일부는 특정 값과 유사한 객체에 대한 것이고 일부는 JavaBeans 로직이 작동 할 것이라는 것을 알고있는 빈 스타일 객체에 대한 것입니다. 그런 다음 오브젝트 GsonBuilder를 만들기 전에이 모든 것을에 잼 Gson합니다.
불행히도 GSON은 Object[]. 메소드 매개 변수를 표현하기 위해 JSON 객체를 만들려고 할 때 주로 이것을 보았습니다. 이에 대한 해결 방법 TypeAdapter은 메서드를 반영하는 사용자 지정 인스턴스 를 만드는 것 입니다. (이것은 Gson호출하려는 메서드 당 하나의 인스턴스 를 사용하게됨을 의미합니다 ...)
참고 URL : https://stackoverflow.com/questions/6203487/why-does-gson-use-fields-and-not-getters-setters
'IT TIP' 카테고리의 다른 글
| C #을 사용하여 레지스트리 값이 있는지 확인하는 방법은 무엇입니까? (0) | 2020.10.29 |
|---|---|
| git 상태가 준비된 파일 만 표시하도록하는 방법 (0) | 2020.10.29 |
| data.table 열에서 텍스트 문자열 분할 (0) | 2020.10.29 |
| Java에서 값으로 날짜 객체를 만드는 방법 (0) | 2020.10.29 |
| printf를 사용하여 BASH의 문자에 대한 정수 ASCII 값 (0) | 2020.10.29 |