객체가 Java에서 동적 유형으로 캐스트되는지 확인하십시오.

크로우

참조가 해당 객체의 정확한 유형으로 캐스트되었는지 확인하는 방법이 있는지 알고 싶습니다. 예를 들면 ...

String s = new String("test");
checkCast(s); //Returns true, since s has a dynamic and static type of String.
Object o = (Object) s;
checkCast(o); //Returns false, since the dynamic and static type of o are not equal.

실제 문제에 대한 배경 ...

아래와 같은 클래스 A, B, C의 계층이 있습니다.

class A {}
class B extends A {}
class C extends B {}

그리고 LinkedList<A>A 오브젝트가 있습니다. 이 목록에는 위의 클래스가 포함될 수 있습니다. 다음과 같은 방법이 있습니다.

<T extends A> T getFirstObjInList(){
   //Iterate over the list and return the first object that is of type T...
}

내 목록의 개체가 메서드에 전달 된 Generic Type인지 확인하는 방법을 알아야합니다. 삭제 등으로 인해 instanceof를 사용할 수 없으며 메서드의 제목을 변경하지 않는 것이 좋습니다. 즉, 매개 변수 또는 이와 유사한 것을 추가하는 것입니다.

내가 처음 시도한 것은 목록의 각 객체를 for 루프에서 T로 캐스팅하는 것이며 ClassCastException이 발생하면 반복을 계속하지만 분명히 내가 가진 계층 구조에서 작동하지 않았으므로 지금 찾고 있습니다. 객체가 동적 유형으로 캐스팅되었는지 확인하는 방법입니다. 목록의 객체가 지정된 유형이면 캐스트 될 때 정적 유형이 변경되지 않으므로 두 유형을 비교할 수 있으면 객체가 지정된 제네릭 유형의 인스턴스인지 알아낼 수 있습니다.

참고 : list.getFirst() instanceof T유형 삭제로 인해 컴파일되지 않습니다.

Shmosel

지금까지 결론을 내리셨 겠지만, 타입 삭제로 인해 메서드 서명이 실행 가능하지 않습니다. 명시 적 유형을 전달하는 것이 좋습니다.

<T extends A> T getFirstObjInList(Class<T> type) {
    for (A a : list) {
        if (a.getClass() == type) {
            return type.cast(a);
        }
    }
    return null;
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Swift 2에서 객체 유형을 동적으로 확인

분류에서Dev

스크립트가 수동으로 호출되지 않고 cron에 의해 시작되었는지 확인하십시오.

분류에서Dev

유창한 주장 : 컬렉션에 제공된 것과 동일한 객체가 포함되어 있는지 확인하십시오.

분류에서Dev

==를 사용하여 두 객체가 파이썬에서 동일한 값을 갖는지 확인하십시오.

분류에서Dev

스크립트가 독립 실행 형으로 실행되는지 아니면 django 인터페이스에서 실행되는지 확인하십시오.

분류에서Dev

두 Java 목록에 순서 및 요소 수에 관계없이 동일한 객체가 포함되어 있는지 확인하십시오.

분류에서Dev

동적 유형이 캐스트 된 유형 인 객체에 대해 dynamic_cast가 실패합니다.

분류에서Dev

객체가 동적으로 할당되지 않을 때 (포인터가 아닌) 수퍼 클래스 객체에서 서브 클래스로 캐스트 할 수 있습니까?

분류에서Dev

객체 클래스에 함수가 존재하지 않는지 동적으로 확인

분류에서Dev

구조체에서 작동하지 않는보다 구체적인 유형의 IEnumerable <object> 할당 / 캐스트

분류에서Dev

파이썬 객체가 작동하지 않는지 확인하십시오.

분류에서Dev

Java에서 명시 적 유형으로 맵 객체를 인스턴스화해야합니까?

분류에서Dev

클릭 한 href에 해시가 있는지 확인하고 링크로 이동하지 마십시오.

분류에서Dev

Java에 객체 속성이 있는지 확인하십시오.

분류에서Dev

문자열에 정규식으로 독립형 'C ++'가 포함되어 있는지 확인하십시오.

분류에서Dev

Typescript : 객체 유형의 TS7017 인덱스 서명이 암시 적으로 루프에 '모든'유형을 가짐

분류에서Dev

TypeScript : 인터페이스에서 동적으로 공용체 유형 생성

분류에서Dev

0.00이 허용되는 값일 때 문자열을 부동 소수점으로 변환하는 중에 오류가 있는지 확인하십시오.

분류에서Dev

TypeScript : 객체 콘텐츠에서 암시 적으로 일반 인터페이스의 객체 유형 추론

분류에서Dev

C #에서 형식을 명시 적으로 확인하지 않고 자동으로 개체를 구체적인 형식으로 캐스팅하는 방법은 무엇입니까?

분류에서Dev

Java 스트림 "reduce ()"가 동일한 객체를 축적하는 이유

분류에서Dev

Java regex로 변수 값 뒤에 표시가 있는지 확인하십시오.

분류에서Dev

동적으로 생성 된 JButton의 3/9 텍스트가 일치하는지 확인하십시오. (Tic Tac Toe 게임용)

분류에서Dev

Automapper 한 객체에서 동일한 유형의 두 객체 속성으로 속성을 지정하는 방법

분류에서Dev

유형 객체를 구체적인 유형으로 동적으로 직렬화

분류에서Dev

사용자가 로그인인지 IOS에 있는지 확인하십시오.

분류에서Dev

스크립트가 루트로 실행되는지 확인하십시오.

분류에서Dev

동적으로 채워진 확인란에 대해 작동하지 않는 모든 jquery를 확인하십시오.

분류에서Dev

내 선택 태그 중 하나가 동일한 클래스로 변경되는지 확인하십시오.

Related 관련 기사

  1. 1

    Swift 2에서 객체 유형을 동적으로 확인

  2. 2

    스크립트가 수동으로 호출되지 않고 cron에 의해 시작되었는지 확인하십시오.

  3. 3

    유창한 주장 : 컬렉션에 제공된 것과 동일한 객체가 포함되어 있는지 확인하십시오.

  4. 4

    ==를 사용하여 두 객체가 파이썬에서 동일한 값을 갖는지 확인하십시오.

  5. 5

    스크립트가 독립 실행 형으로 실행되는지 아니면 django 인터페이스에서 실행되는지 확인하십시오.

  6. 6

    두 Java 목록에 순서 및 요소 수에 관계없이 동일한 객체가 포함되어 있는지 확인하십시오.

  7. 7

    동적 유형이 캐스트 된 유형 인 객체에 대해 dynamic_cast가 실패합니다.

  8. 8

    객체가 동적으로 할당되지 않을 때 (포인터가 아닌) 수퍼 클래스 객체에서 서브 클래스로 캐스트 할 수 있습니까?

  9. 9

    객체 클래스에 함수가 존재하지 않는지 동적으로 확인

  10. 10

    구조체에서 작동하지 않는보다 구체적인 유형의 IEnumerable <object> 할당 / 캐스트

  11. 11

    파이썬 객체가 작동하지 않는지 확인하십시오.

  12. 12

    Java에서 명시 적 유형으로 맵 객체를 인스턴스화해야합니까?

  13. 13

    클릭 한 href에 해시가 있는지 확인하고 링크로 이동하지 마십시오.

  14. 14

    Java에 객체 속성이 있는지 확인하십시오.

  15. 15

    문자열에 정규식으로 독립형 'C ++'가 포함되어 있는지 확인하십시오.

  16. 16

    Typescript : 객체 유형의 TS7017 인덱스 서명이 암시 적으로 루프에 '모든'유형을 가짐

  17. 17

    TypeScript : 인터페이스에서 동적으로 공용체 유형 생성

  18. 18

    0.00이 허용되는 값일 때 문자열을 부동 소수점으로 변환하는 중에 오류가 있는지 확인하십시오.

  19. 19

    TypeScript : 객체 콘텐츠에서 암시 적으로 일반 인터페이스의 객체 유형 추론

  20. 20

    C #에서 형식을 명시 적으로 확인하지 않고 자동으로 개체를 구체적인 형식으로 캐스팅하는 방법은 무엇입니까?

  21. 21

    Java 스트림 "reduce ()"가 동일한 객체를 축적하는 이유

  22. 22

    Java regex로 변수 값 뒤에 표시가 있는지 확인하십시오.

  23. 23

    동적으로 생성 된 JButton의 3/9 텍스트가 일치하는지 확인하십시오. (Tic Tac Toe 게임용)

  24. 24

    Automapper 한 객체에서 동일한 유형의 두 객체 속성으로 속성을 지정하는 방법

  25. 25

    유형 객체를 구체적인 유형으로 동적으로 직렬화

  26. 26

    사용자가 로그인인지 IOS에 있는지 확인하십시오.

  27. 27

    스크립트가 루트로 실행되는지 확인하십시오.

  28. 28

    동적으로 채워진 확인란에 대해 작동하지 않는 모든 jquery를 확인하십시오.

  29. 29

    내 선택 태그 중 하나가 동일한 클래스로 변경되는지 확인하십시오.

뜨겁다태그

보관