2017-02-28 5 views
3

개장을위한 POJO 클래스가 있습니다.POJO 리던던시 갱신을 피하십시오

public class AppData(){ 
     String a; 
     String b; 
     String c; 
     String d; 

     public void setA(String a){ 
      this.a = a; 
     } 
     public String getA(){ 
     return a; 
     } 
     public void setB(String b){ 
      this.b = b; 
     } 
     public String getB(){ 
     return b; 
     } 
     public void setC(String c){ 
      this.c = c; 
     } 
     public String getC(){ 
     return c; 
     } 
     public void setD(String d){ 
      this.d = d; 
     } 
     public String getD(){ 
     return d; 
     } 
    } 

나는 AppData 클래스가 필요한 곳에 3 가지 다른 개조 요청을했습니다. 그러나 요청 1에서는 속성 a와 b 만 필요합니다. 요청 2에서는 a, b, c 만 필요하고 세 번째 요청에서는 b, c 및 d 만 필요합니다. 참조에서 일시적인 키워드 추가, 주석 추가 등의 솔루션을 찾았지만 솔루션을 얻지 못했습니다. 이 3 가지 요청 모두에 대해 동일한 POJO 클래스를 사용할 방법이 있습니까? 사전

+6

오류없이 동일한 POJO 클래스를 사용할 수 있습니다. 변수의 나머지 부분은 null이 될 것입니다. –

+0

serialize 및 deserialize하는 동안 사용되지 않은 필드 값을 null로두면 완벽하게 작동하므로 어떤 오류가 발생합니까? – Avi

+0

처음에는 시도해 보았을 때 구현과 관련하여 몇 가지 문제가 있었고 시간을 관리하여 중복으로 만들었습니다. 이제는 이미 프로젝트에 깊이 도달했으며 문제를 일으킬 수있는 중복성을 제거할지 여부를 알아야합니다. 덕분에 시간이 내 주셔서 감사합니다 –

답변

2

3 개의 요청 모두에 대해 AppData 클래스를 전달하십시오. 값에 응답하여 반환간에

Call<AppData> 

을 입수하면서 각 게터를 사용할 수 있도록 설정된다 만, B가 다른 요청 각각의 변수에 대해 유사하게 설정 될 것이다 먼저 요청에 대한 예를 업데이트한다

그래서 주먹 요청에 C와 D를 검색하려고하지, 그렇지 않으면 당신은 이 NullPointer에만 사용 얻을 것이다

response.getA(); 
response.getB(); 

다른 요청에 대해서도 마찬가지로 응답으로 반환되는 것을 사용하십시오.

+1

'getC()'또는'getD()'를 실행하려고하면 @Mrinmoy –

+2

이 고마워요. 역 직렬화되지 않았 으면'NullPointer' 예외가 생기지 않을 것입니다.'null '다시. 값이 돌아 왔는지 여부를 확인하는 경우에 유용 할 수 있습니다. –

+1

@ carlpoole은 올바른 값 null입니다. 조건 검사 등에 이러한 변수를 사용하려고하면 NullPointer가 반환됩니다. – Mrinmoy

2

에서

감사는 AppData 객체는 3 개 요청에 대해 작동합니다. 서버 응답에서 deserialize되지 않은 값은 null입니다.