제네릭 유형 인스턴스화

냉동 완두콩의 로디

제네릭을 사용하기 위해 기존 클래스를 변환하려고하는데 생성자를 변환하는 동안 난처 해집니다.

원래 클래스는 텍스트 기반 콘솔 게임에서 한 방에서 다른 방으로 이동하는 논리를 포함하는 POJO였습니다. 말 그대로 액션을 실행하는 문자열 트리거 (예 : 사용자가 "walk right"입력), 설명 및 새 위치에 대한 포인터를 포함하는 클래스였습니다.

현재 클래스의 제네릭이 아닌 버전은 다음과 같습니다.

public class Navigation implements Serializable {
    private static final long serialVersionUID = 1L;
    private String trigger;
    private String description;
    private Location target;

    public Navigation() {
        this("", "", new Location());
    }

    public Navigation(String trigger, String description, Location target) {
        this.trigger = trigger;
        this.description = description;
        this.target = target;
    }

    // plus getters, setters, etc.
}

( Location클래스는 위치를 설명하는 또 다른 POJO입니다. 관련이 없습니다.)

s Navigation가 아닌 대상을 처리 할 수 ​​있도록 클래스 를 확장하고 싶습니다 Location. 이 작업을 수행하는 가장 좋은 방법은 Navigation제네릭을 사용 하도록 클래스를 변환하는 것이라고 생각 했기 때문에 다음과 같이 시도했습니다.

public class Navigation<T> implements Serializable {
    private static final long serialVersionUID = 2L;
    private String trigger;
    private String description;
    private T target;

    public Navigation() {
        this("", "", new T());
    }

    public Navigation(String trigger, String description, T target) {
        this.trigger = trigger;
        this.description = description;
        this.target = target;
    }

    // plus getters, setters, etc.
}

그러나 인스턴스화 할 수 this("", "", new T());없기 때문에 줄에서 컴파일되지 않습니다 T. 이 컨텍스트에서 제네릭 형식 개체를 인스턴스화 할 수 있습니까?

보헤미아 사람

기본적으로 두 가지 선택이 있습니다.

1. 인스턴스 필요 :

public Navigation(T t) {
    this("", "", t);
}

2. 클래스 인스턴스가 필요합니다.

public Navigation(Class<T> c) {
    this("", "", c.newInstance());
}

팩토리 패턴을 사용할 수 있지만 궁극적으로 이와 동일한 문제에 직면하게되지만 코드의 다른 곳으로 푸시하면됩니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

변수에서 제네릭 유형 인스턴스화

분류에서Dev

인스턴스화 제네릭 형식의 ArrayList <T>

분류에서Dev

제네릭 유형 확인

분류에서Dev

제네릭 클래스 유형 확인

분류에서Dev

객체가 제네릭 기본 클래스의 인스턴스인지, 제네릭 유형인지 확인

분류에서Dev

제네릭 클래스의 제네릭 메서드에 동적 유형의 인스턴스 전달

분류에서Dev

Scala에서 제네릭 유형 T의 객체를 인스턴스화 할 수 있습니까?

분류에서Dev

Swift 3에서 제네릭 유형 AnyObject로 NSFetchedResultController를 인스턴스화 할 수 없습니다.

분류에서Dev

Swift에서 제네릭 유형의 구체적인 인스턴스 확장

분류에서Dev

Swift : 제네릭 클래스의 제네릭 유형 비교

분류에서Dev

TypeScript에서 제한된 제네릭 유형의 인스턴스를 인스턴스화하는 방법이 있습니까?

분류에서Dev

제네릭 유형 C # 캐스팅

분류에서Dev

나중에 Java의 코드에서 인스턴스 제네릭 유형 정의

분류에서Dev

제네릭 유형의 인스턴스는 어떻게 생성합니까?

분류에서Dev

제네릭 유형 추론 단순화

분류에서Dev

인터페이스를 구현하는 제네릭 형식을 인스턴스화하는 Java

분류에서Dev

구체적 유형으로 객체를 인스턴스화 할 때 변수에 제네릭 유형을 사용할 수없는 이유는 무엇입니까?

분류에서Dev

제네릭 유형의 제네릭 클래스에서 유형 인수에 액세스

분류에서Dev

매개 변수화 된 유형이 계층 구조를 통과 할 때 Java에서 제네릭 유형의 인스턴스를 만드시겠습니까?

분류에서Dev

제네릭 유형이 1 개인 클래스에서 제네릭 유형이 2 개인 메서드

분류에서Dev

제네릭 클래스 유형 제약이있는 제네릭 메서드

분류에서Dev

MongoDb는 제네릭 유형 (클래스) 직렬화

분류에서Dev

제네릭 Span <T>를 런타임에 실제로 해당 유형 인 경우 특정 인스턴스화 (예 : Span <int>)로 변환

분류에서Dev

제네릭 유형 인터페이스로 개체의 인스턴스를 만들 때 컴파일 오류

분류에서Dev

매개 변수를 보조 제네릭 유형으로 사용하는 제네릭 유형의 인스턴스 생성

분류에서Dev

F # 정적 멤버, 제네릭 형식 인스턴스화 누락-가능한 버그?

분류에서Dev

제네릭 유형의 인터페이스 API 호출

분류에서Dev

제네릭을 통해 TypeScript 인덱스 유형 축소

분류에서Dev

인터페이스에서 제네릭 유형 추론

Related 관련 기사

  1. 1

    변수에서 제네릭 유형 인스턴스화

  2. 2

    인스턴스화 제네릭 형식의 ArrayList <T>

  3. 3

    제네릭 유형 확인

  4. 4

    제네릭 클래스 유형 확인

  5. 5

    객체가 제네릭 기본 클래스의 인스턴스인지, 제네릭 유형인지 확인

  6. 6

    제네릭 클래스의 제네릭 메서드에 동적 유형의 인스턴스 전달

  7. 7

    Scala에서 제네릭 유형 T의 객체를 인스턴스화 할 수 있습니까?

  8. 8

    Swift 3에서 제네릭 유형 AnyObject로 NSFetchedResultController를 인스턴스화 할 수 없습니다.

  9. 9

    Swift에서 제네릭 유형의 구체적인 인스턴스 확장

  10. 10

    Swift : 제네릭 클래스의 제네릭 유형 비교

  11. 11

    TypeScript에서 제한된 제네릭 유형의 인스턴스를 인스턴스화하는 방법이 있습니까?

  12. 12

    제네릭 유형 C # 캐스팅

  13. 13

    나중에 Java의 코드에서 인스턴스 제네릭 유형 정의

  14. 14

    제네릭 유형의 인스턴스는 어떻게 생성합니까?

  15. 15

    제네릭 유형 추론 단순화

  16. 16

    인터페이스를 구현하는 제네릭 형식을 인스턴스화하는 Java

  17. 17

    구체적 유형으로 객체를 인스턴스화 할 때 변수에 제네릭 유형을 사용할 수없는 이유는 무엇입니까?

  18. 18

    제네릭 유형의 제네릭 클래스에서 유형 인수에 액세스

  19. 19

    매개 변수화 된 유형이 계층 구조를 통과 할 때 Java에서 제네릭 유형의 인스턴스를 만드시겠습니까?

  20. 20

    제네릭 유형이 1 개인 클래스에서 제네릭 유형이 2 개인 메서드

  21. 21

    제네릭 클래스 유형 제약이있는 제네릭 메서드

  22. 22

    MongoDb는 제네릭 유형 (클래스) 직렬화

  23. 23

    제네릭 Span <T>를 런타임에 실제로 해당 유형 인 경우 특정 인스턴스화 (예 : Span <int>)로 변환

  24. 24

    제네릭 유형 인터페이스로 개체의 인스턴스를 만들 때 컴파일 오류

  25. 25

    매개 변수를 보조 제네릭 유형으로 사용하는 제네릭 유형의 인스턴스 생성

  26. 26

    F # 정적 멤버, 제네릭 형식 인스턴스화 누락-가능한 버그?

  27. 27

    제네릭 유형의 인터페이스 API 호출

  28. 28

    제네릭을 통해 TypeScript 인덱스 유형 축소

  29. 29

    인터페이스에서 제네릭 유형 추론

뜨겁다태그

보관