제네릭 클래스에서 변수 이름을 바꿀 수 있습니까?

Phiilschke

나는 클래스가 PagedResult있습니다. 이 클래스는 페이지 형식의 다른 개체를 사용하여 JSON 출력을 실현하는 데 도움이됩니다. E목록에 싸여 객체입니다. 모두 잘 작동하지만 한 가지는 여전히 나를 괴롭 힙니다. 개체가있는 목록이 항상 같은 이름을 갖지 않기를 바랍니다. 해당 개체에 이름을 적용하고 싶습니다.

클래스 PagedResult:

public class PagedResult<E> {

Long totalItems;
Integer totalPages;
Integer currentPage;
List<E> elements;

[... Getter & Setter ...] 
}

객체가 포함 된 실제 JSON 출력은 MyPojo다음과 같습니다.

{
"totalItems": 2,
"totalPages": 1,
"currentPage": 1,
"elements": [
    {
        "myPojoAttr1": "hello",
        "myPojoAttr2": "there"
    },
    {
        "myPojoAttr1": "hello",
        "myPojoAttr2": "folks"
    }
 ]
}

따라서 각 응답에 대해 어떤 객체 든 상관없이 배열은 "elements" 로 명명됩니다 . PagedResult-class의 객체가 변경되기 때문에 JSON 응답에 추악한 이름을 원하지 않습니다 . MyPojoJSON-Array 이름 과 같은 객체 "myPojos" 여야 하고 "myWins"MyWin 라는 이름 과 같은 객체로 응답을 받고 싶을 때 응답을받을 때 .

나는 많이 시도했지만 @JsonProperty이 "object-array-name"도 일반적으로 수행하는 방법을 찾을 수 없습니다. 누군가가 문제로 나를 도울 수 있습니까? 미리 감사드립니다.

스티븐 C

아뇨. 할 수 없습니다. 일반 유형에는 식별자가 아닌 유형에 대한 매개 변수가 있습니다. AFAIK, Java 언어에는 유형을 생성 할 때 Java 식별자를 매개 변수로 처리 할 수있는 것이 없습니다. (확실히,이 맥락에서 사용할 수있는 것은 없습니다!)

대안 :

  • 하지마. (JSON 속성 이름을 변경하려는 이유를 자세히 살펴보십시오. 실제로 무엇을 달성합니까? 노력할만한 가치가 있습니까?)

  • 제네릭 유형을 사용하지 마십시오. "페이징 된 결과"의 각 종류에 대해 다른 클래스를 정의하십시오. (Clunky. 권장하지 않습니다.)

  • 맵을 사용하고 각 "페이징 된 결과"유형의 요소 속성에 대해 다른 맵 키로 맵을 채 웁니다. (단점은 정적 유형 검사를 잃고 약간의 성능 및 스토리지 패널티를 받는다는 것입니다. 그러나 이는 중요하지 않을 것입니다.)

  • 사용자 지정 매퍼를 작성 PagedResult하여 요구 사항에 따라 직렬화 및 역 직렬화합니다 .


그만한 가치는 매개 변수로서의 식별자는 매크로 전처리기로 할 수있는 일입니다. 그 Java 언어에는 그런 종류의 표준 지원이 없습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Windows 7에서 글꼴 이름을 바꿀 수 있습니까?

분류에서Dev

제네릭 유형을 제한하면서 제네릭 클래스를 확장 할 수 있습니까?

분류에서Dev

typescript에서 제네릭이있는 클래스 인스턴스를 어떻게 감지 할 수 있습니까?

분류에서Dev

R.string의 끝에있는 이름을 바꿀 수 있습니까? 변수로 호출

분류에서Dev

cpp에서 cout, endl 키워드의 이름을 바꿀 수 있습니까?

분류에서Dev

WinXP에서 "Recyle Bin"폴더의 이름을 바꿀 수 있습니까?

분류에서Dev

ls에서 선택한 파일의 이름을 바꿀 수 있습니까?

분류에서Dev

evince에서 북마크의 이름을 어떻게 바꿀 수 있습니까?

분류에서Dev

Perl에서 URL을 심볼릭 링크로 바꿀 수 있습니까?

분류에서Dev

한 번의 클릭으로 하나 이상의 메일 제목을 어떻게 바꿀 수 있습니까?

분류에서Dev

kotlin 데이터 클래스에서 제네릭 유형을 만들 수 있습니까?

분류에서Dev

Spring WS 웹 서비스에서 응답 네임 스페이스 접두사 이름을 바꿀 수 있습니까?

분류에서Dev

어떻게 mixin이 제네릭 수퍼 클래스의 유형 매개 변수를 알 수 있습니까?

분류에서Dev

제네릭 유형에서 클래스 속성을 자동 생성 할 수 있습니까?

분류에서Dev

동일한 클래스에서 변수 이름을 복제 할 수 있습니까?

분류에서Dev

VS에서 파일 이름을 바꿀 수 없습니다.

분류에서Dev

Windows 7에서 파일 이름을 바꿀 수 없습니다.

분류에서Dev

Android Studio에서 모듈 이름을 바꿀 수 없습니다.

분류에서Dev

Banshee가 태그에 따라 노래 파일의 이름을 바꿀 수있는 방법이 있습니까?

분류에서Dev

regex에서 span contenteditable을 어떻게 바꿀 수 있습니까?

분류에서Dev

PyTorch Tensor에서 어떻게 값을 바꿀 수 있습니까?

분류에서Dev

System.out.println ()에서 "out"을 바꿀 수 있습니까?

분류에서Dev

C #에서 DrawRectangle / FillRectangle의 방향을 바꿀 수 있습니까?

분류에서Dev

Realm에서 배열을 Result <>로 바꿀 수 있습니까?

분류에서Dev

이 예제에서 반환 값으로 함수 이름을 바꿀 수없는 이유는 무엇입니까?

분류에서Dev

나중에 MSI 이름을 바꿀 수 없습니다.

분류에서Dev

GCP Cloud Run 서비스의 이름을 바꿀 수 있나요?

분류에서Dev

다른 제네릭 클래스에서 유형 매개 변수로도 사용될 때 제네릭 유형을 추론 할 수 없습니다.

분류에서Dev

제네릭 프로그래밍을 위해 변수 유형에 액세스 할 수 있습니까?

Related 관련 기사

  1. 1

    Windows 7에서 글꼴 이름을 바꿀 수 있습니까?

  2. 2

    제네릭 유형을 제한하면서 제네릭 클래스를 확장 할 수 있습니까?

  3. 3

    typescript에서 제네릭이있는 클래스 인스턴스를 어떻게 감지 할 수 있습니까?

  4. 4

    R.string의 끝에있는 이름을 바꿀 수 있습니까? 변수로 호출

  5. 5

    cpp에서 cout, endl 키워드의 이름을 바꿀 수 있습니까?

  6. 6

    WinXP에서 "Recyle Bin"폴더의 이름을 바꿀 수 있습니까?

  7. 7

    ls에서 선택한 파일의 이름을 바꿀 수 있습니까?

  8. 8

    evince에서 북마크의 이름을 어떻게 바꿀 수 있습니까?

  9. 9

    Perl에서 URL을 심볼릭 링크로 바꿀 수 있습니까?

  10. 10

    한 번의 클릭으로 하나 이상의 메일 제목을 어떻게 바꿀 수 있습니까?

  11. 11

    kotlin 데이터 클래스에서 제네릭 유형을 만들 수 있습니까?

  12. 12

    Spring WS 웹 서비스에서 응답 네임 스페이스 접두사 이름을 바꿀 수 있습니까?

  13. 13

    어떻게 mixin이 제네릭 수퍼 클래스의 유형 매개 변수를 알 수 있습니까?

  14. 14

    제네릭 유형에서 클래스 속성을 자동 생성 할 수 있습니까?

  15. 15

    동일한 클래스에서 변수 이름을 복제 할 수 있습니까?

  16. 16

    VS에서 파일 이름을 바꿀 수 없습니다.

  17. 17

    Windows 7에서 파일 이름을 바꿀 수 없습니다.

  18. 18

    Android Studio에서 모듈 이름을 바꿀 수 없습니다.

  19. 19

    Banshee가 태그에 따라 노래 파일의 이름을 바꿀 수있는 방법이 있습니까?

  20. 20

    regex에서 span contenteditable을 어떻게 바꿀 수 있습니까?

  21. 21

    PyTorch Tensor에서 어떻게 값을 바꿀 수 있습니까?

  22. 22

    System.out.println ()에서 "out"을 바꿀 수 있습니까?

  23. 23

    C #에서 DrawRectangle / FillRectangle의 방향을 바꿀 수 있습니까?

  24. 24

    Realm에서 배열을 Result <>로 바꿀 수 있습니까?

  25. 25

    이 예제에서 반환 값으로 함수 이름을 바꿀 수없는 이유는 무엇입니까?

  26. 26

    나중에 MSI 이름을 바꿀 수 없습니다.

  27. 27

    GCP Cloud Run 서비스의 이름을 바꿀 수 있나요?

  28. 28

    다른 제네릭 클래스에서 유형 매개 변수로도 사용될 때 제네릭 유형을 추론 할 수 없습니다.

  29. 29

    제네릭 프로그래밍을 위해 변수 유형에 액세스 할 수 있습니까?

뜨겁다태그

보관