Kotlin-일반 상속을위한 반환 유형

Cershif

일반 부모 클래스가 있습니다.

 open class Parent<T>{/*...*/}

일반 부모의 특정 인스턴스를 구현하는 몇 가지 파생 클래스가 있습니다.

class Derived1 : Parent<Foo1> {/*...*/}
class Derived2 : Parent<Foo2> {/*...*/}

여기서 Foo1과 Foo2는 다른 곳에 정의 된 일부 클래스입니다.

이제 일부 입력 매개 변수를 기반으로 다른 파생 클래스를 반환하는 함수를 만들어야합니다.

fun getDerived(derived: SomeEnumType): Parent{
    //return the correct derived class
}

물론 부모가 일반 매개 변수를 필요로하기 때문에 위의 줄은 컴파일되지 않습니다. Derived 클래스는 동일한 유형이 아니므로이를 다형성으로 처리 할 수있을 것으로 기대하지 않습니다. 이것을 어떻게 달성 할 수 있습니까? 나는 kotlin에 익숙하지만 이것은 속임수처럼 보입니다.

도움이된다면이 패턴을 사용하여 gson 라이브러리를 사용하여 올바른 자식 클래스에서 json을 구문 분석하고 있습니다 (디시리얼라이저를 재정 의하여).

BrantApps

당신은 멀리 얻을 수 Parent<*>있지만, 관계가있는 경우 Foo1Foo2(공통 인터페이스를 확장 예 :, Buzz) 당신은 같은 것을 사용할 수 있습니다 Parent<out Buzz>.

IIRC <*>는 Java의 와일드 카드와 같습니다 <?>. 응답 유형을 제한하지 않으면 getDerived응답을 검사 할 수 있도록 함수 호출 사이트에 유형 가드가 필요합니다 .

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Kotlin-일반 반환 유형이있는 추상 함수

분류에서Dev

KOTLIN 문자열을 일반 유형으로 변환

분류에서Dev

Kotlin은 반환 유형이 다른 속성 getter와 동일한 함수 서명을 허용합니다.

분류에서Dev

kotlin 컴파일러는 이러한 유형의 경고를 반환합니다.

분류에서Dev

Kotlin : 일반 유형을 반환하는 함수입니다. 반환해야하는 구체적인 유형을 모르는 경우 어떻게합니까?

분류에서Dev

Java 반환 유형 일반

분류에서Dev

Kotlin의 조건부 nullable 반환 유형

분류에서Dev

`map` Kotlin의 잘못된 반환 유형

분류에서Dev

신속한 일반 수학 유형에서 Int 반환

분류에서Dev

신속한 일반 수학 유형에서 Int 반환

분류에서Dev

Kotlin 일반 유형에서 속성 가져 오기

분류에서Dev

일반 유형으로 열거 형을 반환하는 Rust

분류에서Dev

Scala : 종속 유형 반환

분류에서Dev

다른 데이터 유형을 반환하는 Kotlin 실행 범위 함수

분류에서Dev

С ++ 추상 반환 유형

분류에서Dev

자바 제네릭 : 제한된 일반 유형을 반환

분류에서Dev

Kotlin의 일반 유형 참조

분류에서Dev

Coq-함수 반환 유형과 동일한 유형의 반환 값

분류에서Dev

다른 입력 범위 반환시 함수 반환 유형 불일치 현상

분류에서Dev

Kotlin의 봉인 된 클래스, 호환되지 않는 유형 오류는 상위 유형을 반환 할 수 없습니다.

분류에서Dev

안드로이드 | Kotlin : 'onCreateDialog'의 반환 유형이 재정의 된 구성원의 반환 유형의 하위 유형이 아닙니다.

분류에서Dev

일반 함수에 대한 TypeScript 조건부 반환 유형

분류에서Dev

`식별 가능한`적합성 반환 유형 일반 변수

분류에서Dev

반환 된 매개 변수에 대한 useReducer의 일반 유형

분류에서Dev

Spring AOP로 가능한 일반 반환 유형

분류에서Dev

다른 유형을 반환 할 수있는 일반 메서드

분류에서Dev

다른 반환 유형을 가진 일반 대리자

분류에서Dev

신속한 상속 함수 반환 유형은 하위 유형이 될 수 없습니다.

분류에서Dev

신속한 코드 반환 유형

Related 관련 기사

  1. 1

    Kotlin-일반 반환 유형이있는 추상 함수

  2. 2

    KOTLIN 문자열을 일반 유형으로 변환

  3. 3

    Kotlin은 반환 유형이 다른 속성 getter와 동일한 함수 서명을 허용합니다.

  4. 4

    kotlin 컴파일러는 이러한 유형의 경고를 반환합니다.

  5. 5

    Kotlin : 일반 유형을 반환하는 함수입니다. 반환해야하는 구체적인 유형을 모르는 경우 어떻게합니까?

  6. 6

    Java 반환 유형 일반

  7. 7

    Kotlin의 조건부 nullable 반환 유형

  8. 8

    `map` Kotlin의 잘못된 반환 유형

  9. 9

    신속한 일반 수학 유형에서 Int 반환

  10. 10

    신속한 일반 수학 유형에서 Int 반환

  11. 11

    Kotlin 일반 유형에서 속성 가져 오기

  12. 12

    일반 유형으로 열거 형을 반환하는 Rust

  13. 13

    Scala : 종속 유형 반환

  14. 14

    다른 데이터 유형을 반환하는 Kotlin 실행 범위 함수

  15. 15

    С ++ 추상 반환 유형

  16. 16

    자바 제네릭 : 제한된 일반 유형을 반환

  17. 17

    Kotlin의 일반 유형 참조

  18. 18

    Coq-함수 반환 유형과 동일한 유형의 반환 값

  19. 19

    다른 입력 범위 반환시 함수 반환 유형 불일치 현상

  20. 20

    Kotlin의 봉인 된 클래스, 호환되지 않는 유형 오류는 상위 유형을 반환 할 수 없습니다.

  21. 21

    안드로이드 | Kotlin : 'onCreateDialog'의 반환 유형이 재정의 된 구성원의 반환 유형의 하위 유형이 아닙니다.

  22. 22

    일반 함수에 대한 TypeScript 조건부 반환 유형

  23. 23

    `식별 가능한`적합성 반환 유형 일반 변수

  24. 24

    반환 된 매개 변수에 대한 useReducer의 일반 유형

  25. 25

    Spring AOP로 가능한 일반 반환 유형

  26. 26

    다른 유형을 반환 할 수있는 일반 메서드

  27. 27

    다른 반환 유형을 가진 일반 대리자

  28. 28

    신속한 상속 함수 반환 유형은 하위 유형이 될 수 없습니다.

  29. 29

    신속한 코드 반환 유형

뜨겁다태그

보관