일반 메소드의 Jackson 및 유형 참조
Jackson을 일반 메소드의 직렬화 및 역직렬화에 사용할 때 유형 삭제 문제가 발생할 수 있습니다.
테스터 메소드가 일반 유형 참조를 사용하여 JSON 문자열에서 일반 요청 객체를 검색하려고 시도하는 다음 코드를 고려하세요.
<code class="java">public MyRequest<T> tester() { TypeReference<MyWrapper<T>> typeRef = new TypeReference<MyWrapper<T>>(); MyWrapper<T> requestWrapper = (MyWrapper<T>) JsonConverter.fromJson(jsonRequest, typeRef); return requestWrapper.getRequest(); }</code>
이 문제는 getMyObject () 메소드가 요청 객체 내에서 호출됩니다.
<code class="java">@NotNull @JsonIgnore public T getMyObject() { return myobjects.get(0); }</code>
Jackson은 일반 유형 T를 Object로 해석하여 getMyObject() 메소드가 호출될 때 반환 값이 LinkedHashMap이 됩니다.
이 모호성을 해결하려면 T의 실제 클래스 유형을 명시적으로 지정해야 합니다. 이는 TypeReference에 대한 인수로 Class 객체를 제공하여 달성할 수 있습니다.
<code class="java">public MyRequest<T> tester() { TypeReference<MyWrapper<T>> typeRef = new TypeReference<MyWrapper<T>>() {}; MyWrapper<T> requestWrapper = (MyWrapper<T>) JsonConverter.fromJson(jsonRequest, typeRef); Type type = typeRef.getType(); // Retrieve the actual type from the TypeReference return requestWrapper.getRequest(type); }</code>
유형 변수를 도입하면 다음과 같습니다. 지정된 유형 정보를 기반으로 JSON 객체를 역직렬화하도록 Jackson에게 지시하여 보다 정확하고 예측 가능한 동작을 제공할 수 있습니다.
위 내용은 유형 참조와 함께 Jackson을 사용할 때 일반 메소드에서 유형 삭제를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!