Java 인터페이스에서 제네릭의 제네릭을 사용하는 방법

기본 서비스에 대한 일반 인터페이스를 작성하려고합니다. 내가 시도한 것은 다음과 같습니다.

요청 및 응답 객체가 있다고 가정합니다. 각 요청 유형은 응답 유형에 바인딩되어야하므로 요청의 응답 유형을 처리 할 수 ​​있습니다.

abstract class Response {

}    

abstract class Request<R extends Response> {

}

이제 이에 대한 몇 가지 구현을 작성해 보겠습니다.

class DummyResponse extends Response {

}

class DummyRequest extends Request<DummyResponse> {

}

좋아요, 우리는 구현이 있습니다. 내가 고생 한 인터페이스로 뛰어 들어 보자.

interface MyService {

   <R extends Response, T extends Request<R>> R getResponse(T request);

}

이 MyService를 구현할 때 오류가 발생합니다.

class MyServiceImpl implements MyService {

    //these method gives me error
    @Override
    public DummyResponse getResponse(DummyRequest request) {
        //do sth
        return response;
    }

}

그래서 나는 왜 이것을하고 있는가? 자체 요청 및 응답 객체로 많은 서비스 구현을 작성하고 싶기 때문에 서비스 인터페이스라는 한 지점에서 처리 할 수 ​​있습니다.

인터페이스를 사용하여 어떻게 할 수 있습니까? 아니면 잘못된 접근입니까? 이를 수행하는 진정한 방법은 무엇입니까?

미리 감사드립니다.

rgettman

MyService인터페이스를 올바르게 구현하려면 getResponse유형 매개 변수와 일치 하는 일반 메소드 제공해야합니다 . 그러나 암시 적 형식 인수를 배치 할 DummyResponse하고 DummyRequest, 당신은 유형 매개 변수를 선언하지 않는 RTMyServicegetResponse방법을 수행합니다.

여기서 해결책은 유형 매개 변수 RT인터페이스 자체 로 이동하는 것입니다.

interface MyService<R extends Response, T extends Request<R>> {
    R getResponse(T request);
}

그런 다음 구현할 때 MyServiceImpl형식 인수를 제공 MyService하고 getResponse해당 형식 인수를 사용하여 getResponse메서드 를 성공적으로 구현할 수 있습니다 .

class MyServiceImpl implements MyService<DummyResponse, DummyRequest> {

    // This now implements MyService correctly. 
    @Override
    public DummyResponse getResponse(DummyRequest request) {
        //do sth
        return response;
    }

}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

클래스 토큰을 사용하여 제네릭 유형의 중첩 제네릭을 유지하는 방법

분류에서Dev

인터페이스와 함께 제네릭을 사용하는 방법

분류에서Dev

JAVA의 제네릭 클래스에서 오버라이드 메서드를 사용하는 방법

분류에서Dev

제네릭 클래스를 기반으로 제네릭 인터페이스를 정의하는 방법

분류에서Dev

제네릭 메서드에서 제네릭 유형을 확인하는 방법

분류에서Dev

React.FC에서 제네릭을 사용하는 방법

분류에서Dev

모듈에서 다중 제네릭을 사용하는 방법?

분류에서Dev

Scala에서 제네릭을 사용하는 방법

분류에서Dev

Java의 제네릭 또는 상속 / 인터페이스?

분류에서Dev

제네릭 형식 이름을 포함하여 제네릭 메서드의 이름을 검색하는 방법

분류에서Dev

TypeScript의 제네릭 유형에서 제네릭 유형을 추론하는 방법이 있습니까?

분류에서Dev

제네릭을 사용하는이 Java 인터페이스 정의가 컴파일러에서 허용되지 않는 이유는 무엇입니까?

분류에서Dev

C #에서 제네릭 메서드의 값을 얻는 방법

분류에서Dev

제네릭 정의 및 제네릭 인수에서 제네릭 유형을 얻는 방법은 무엇입니까?

분류에서Dev

인수 필요 클래스에서 제네릭을 사용하는 방법

분류에서Dev

인터페이스 및 제네릭을 사용하여 Java에서 버튼 그리기

분류에서Dev

인터페이스에서 선택적 제네릭 유형을 선언하는 방법은 무엇입니까?

분류에서Dev

특성이있는 제네릭 제네릭을 만드는 방법?

분류에서Dev

메소드 호출을 방지하는 Java의 제네릭

분류에서Dev

제네릭 유형이 Java에서 다른 클래스 / 인터페이스를 확장하는지 확인하는 방법은 무엇입니까?

분류에서Dev

인터페이스 및 / 또는 제네릭을 사용하는 두 가지 방법 리팩토링

분류에서Dev

제네릭 람다를 사용하여 인터페이스 컬렉션을 처리하는 방법

분류에서Dev

C #에서 Microsoft Fakes를 사용하여 인터페이스에서 제네릭 메서드 정의를 스텁 아웃하는 방법

분류에서Dev

유사한 방법에 대한 제네릭을 사용하여

분류에서Dev

제네릭 Dart 메서드에서 제네릭 유형 T에 대한 제약을 적용하는 방법

분류에서Dev

Rust에서 함수의 제네릭 유형으로 제네릭 유형 별칭을 사용하는 방법이 있습니까?

분류에서Dev

동적 제네릭 유형으로 제네릭을 테스트하는 Java

분류에서Dev

Java에서 제네릭 유형의 고정 크기 배열을 만드는 방법은 무엇입니까?

분류에서Dev

const의 제네릭을 인터페이스로 사용

Related 관련 기사

  1. 1

    클래스 토큰을 사용하여 제네릭 유형의 중첩 제네릭을 유지하는 방법

  2. 2

    인터페이스와 함께 제네릭을 사용하는 방법

  3. 3

    JAVA의 제네릭 클래스에서 오버라이드 메서드를 사용하는 방법

  4. 4

    제네릭 클래스를 기반으로 제네릭 인터페이스를 정의하는 방법

  5. 5

    제네릭 메서드에서 제네릭 유형을 확인하는 방법

  6. 6

    React.FC에서 제네릭을 사용하는 방법

  7. 7

    모듈에서 다중 제네릭을 사용하는 방법?

  8. 8

    Scala에서 제네릭을 사용하는 방법

  9. 9

    Java의 제네릭 또는 상속 / 인터페이스?

  10. 10

    제네릭 형식 이름을 포함하여 제네릭 메서드의 이름을 검색하는 방법

  11. 11

    TypeScript의 제네릭 유형에서 제네릭 유형을 추론하는 방법이 있습니까?

  12. 12

    제네릭을 사용하는이 Java 인터페이스 정의가 컴파일러에서 허용되지 않는 이유는 무엇입니까?

  13. 13

    C #에서 제네릭 메서드의 값을 얻는 방법

  14. 14

    제네릭 정의 및 제네릭 인수에서 제네릭 유형을 얻는 방법은 무엇입니까?

  15. 15

    인수 필요 클래스에서 제네릭을 사용하는 방법

  16. 16

    인터페이스 및 제네릭을 사용하여 Java에서 버튼 그리기

  17. 17

    인터페이스에서 선택적 제네릭 유형을 선언하는 방법은 무엇입니까?

  18. 18

    특성이있는 제네릭 제네릭을 만드는 방법?

  19. 19

    메소드 호출을 방지하는 Java의 제네릭

  20. 20

    제네릭 유형이 Java에서 다른 클래스 / 인터페이스를 확장하는지 확인하는 방법은 무엇입니까?

  21. 21

    인터페이스 및 / 또는 제네릭을 사용하는 두 가지 방법 리팩토링

  22. 22

    제네릭 람다를 사용하여 인터페이스 컬렉션을 처리하는 방법

  23. 23

    C #에서 Microsoft Fakes를 사용하여 인터페이스에서 제네릭 메서드 정의를 스텁 아웃하는 방법

  24. 24

    유사한 방법에 대한 제네릭을 사용하여

  25. 25

    제네릭 Dart 메서드에서 제네릭 유형 T에 대한 제약을 적용하는 방법

  26. 26

    Rust에서 함수의 제네릭 유형으로 제네릭 유형 별칭을 사용하는 방법이 있습니까?

  27. 27

    동적 제네릭 유형으로 제네릭을 테스트하는 Java

  28. 28

    Java에서 제네릭 유형의 고정 크기 배열을 만드는 방법은 무엇입니까?

  29. 29

    const의 제네릭을 인터페이스로 사용

뜨겁다태그

보관