슈퍼 키워드가 Object에서 작동하는 방식

사용자 3345206

실행 가능한 인터페이스에 대해 super를 사용하고 저장하기 위해 Object 유형을 정의하고 있습니다. 컴파일 오류가 발생하지 않지만 아래 코드의 경우 MyRunnale (i)는 MyObject를 사용하여 저장하지만 컴파일러에서 컴파일 오류가 발생합니다. 유형 불일치
컴파일되는 이유를 설명하십시오. 오류 및 왜 거기에 도착하는지.

class Test 
{

    public static void main(String[] args) {
        ArrayList<? super Runnable> a1 = new ArrayList<Object>();
        // Here am not getting any CTE but for the below code
        ArrayList<? super MyRunnable> a2 = new ArrayList<MyObject>();
        // compile error: Type mismatch: cannot convert from ArrayList<MyObject> to
        // ArrayList<? super MyRunnable>
    }
}

class MyObject {
}
interface MyRunnable {
}
class MyThread extends MyObject implements MyRunnable {
}
Codebender

를 사용 ArrayList<? super Runnable>하면 ArrayList가의 ArryList Runnable및 모든 수퍼 유형 Runnable(이 경우 ArrayList<Runnable>()또는 ArrayList<Object>())을 참조 할 수 있음을 의미합니다 .

그러나 MyObject의 하위 유형입니다 Runnable. 따라서을 할당 할 ArrayList<MyObject>()수 없습니다.

당신이 참조 할 경우 ArrayList<MyObject>(), 당신은 사용해야합니다 ArrayList<? extends Runnable>.

그러나 PECS 규칙 을 충족하는지 확인하십시오 .

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

제네릭 <? 슈퍼> 와일드 방법 참조 또는 람다 자바 1.8에서 작동하지

분류에서Dev

Ubuntu 20.04에서 슈퍼 키가 작동하지 않음

분류에서Dev

Kubuntu 18.04에서 다시 작동하는 슈퍼 (Windows) 키 가져 오기

분류에서Dev

파이썬 2에서 슈퍼를 시작하는 방법

분류에서Dev

슈퍼 키를 에뮬레이트하는 방법은 무엇입니까?

분류에서Dev

슈퍼 클래스의 현재 인스턴스가 슈퍼 클래스 내에서 하위 클래스인지 확인하는 올바른 방법

분류에서Dev

다음 코드에서 슈퍼가 가리키는 것은 무엇입니까?

분류에서Dev

슈퍼 유저를 감지하기 위해 템플릿에 조건을 추가하는 방법은 포스트 작성자와 동일합니다.

분류에서Dev

슈퍼 생성자에서 호출되는 재정의 메서드에 멤버를 사용하는 방법

분류에서Dev

안드로이드에서 슈퍼 키워드 사용

분류에서Dev

자바에서 슈퍼를 이해하는 방법

분류에서Dev

자바에서 슈퍼를 이해하는 방법

분류에서Dev

다트에 필요한 슈퍼 생성자를 만드는 방법

분류에서Dev

Objective C의 슈퍼 클래스에서 private 메서드와 속성을 재정의하는 방법

분류에서Dev

Unity에서 슈퍼 + 스페이스 키를 비활성화하는 방법은 무엇입니까?

분류에서Dev

Unity에서 슈퍼 + 스페이스 키를 비활성화하는 방법은 무엇입니까?

분류에서Dev

클래스 수준에서 제네릭의 슈퍼 키워드를 사용할 수없는 이유

분류에서Dev

GWT 2.7 슈퍼 개발 모드는 CssResource.style = obf에서 작동하지 않습니다.

분류에서Dev

Xcore 작업에서 슈퍼 메서드 호출

분류에서Dev

자바에서 슈퍼 키워드의 사용

분류에서Dev

슈퍼 키를 다시 매핑하는 방법?

분류에서Dev

슈퍼 타입 메서드를 호출하면 새로운 슈퍼 타입 객체가 생성됩니까?

분류에서Dev

스칼라에서 슈퍼 타입을 찾는 방법

분류에서Dev

Ubuntu 18.04에서 Dash를 열지 않는 오른쪽 슈퍼 키

분류에서Dev

메뉴 링크가 작동하지 않음-여기에 슈퍼 코딩 newb

분류에서Dev

슈퍼 키를 누른 상태에서 키보드 단축키 목록을 비활성화하는 방법은 무엇입니까?

분류에서Dev

Neo4j 슈퍼 노드를 피하는 방법

분류에서Dev

Java의 자식 클래스 메서드에서 super 키워드를 사용하여 슈퍼 클래스 생성자를 호출 할 수없는 이유는 무엇입니까?

분류에서Dev

자바는 슈퍼 클래스에 메소드 추가

Related 관련 기사

  1. 1

    제네릭 <? 슈퍼> 와일드 방법 참조 또는 람다 자바 1.8에서 작동하지

  2. 2

    Ubuntu 20.04에서 슈퍼 키가 작동하지 않음

  3. 3

    Kubuntu 18.04에서 다시 작동하는 슈퍼 (Windows) 키 가져 오기

  4. 4

    파이썬 2에서 슈퍼를 시작하는 방법

  5. 5

    슈퍼 키를 에뮬레이트하는 방법은 무엇입니까?

  6. 6

    슈퍼 클래스의 현재 인스턴스가 슈퍼 클래스 내에서 하위 클래스인지 확인하는 올바른 방법

  7. 7

    다음 코드에서 슈퍼가 가리키는 것은 무엇입니까?

  8. 8

    슈퍼 유저를 감지하기 위해 템플릿에 조건을 추가하는 방법은 포스트 작성자와 동일합니다.

  9. 9

    슈퍼 생성자에서 호출되는 재정의 메서드에 멤버를 사용하는 방법

  10. 10

    안드로이드에서 슈퍼 키워드 사용

  11. 11

    자바에서 슈퍼를 이해하는 방법

  12. 12

    자바에서 슈퍼를 이해하는 방법

  13. 13

    다트에 필요한 슈퍼 생성자를 만드는 방법

  14. 14

    Objective C의 슈퍼 클래스에서 private 메서드와 속성을 재정의하는 방법

  15. 15

    Unity에서 슈퍼 + 스페이스 키를 비활성화하는 방법은 무엇입니까?

  16. 16

    Unity에서 슈퍼 + 스페이스 키를 비활성화하는 방법은 무엇입니까?

  17. 17

    클래스 수준에서 제네릭의 슈퍼 키워드를 사용할 수없는 이유

  18. 18

    GWT 2.7 슈퍼 개발 모드는 CssResource.style = obf에서 작동하지 않습니다.

  19. 19

    Xcore 작업에서 슈퍼 메서드 호출

  20. 20

    자바에서 슈퍼 키워드의 사용

  21. 21

    슈퍼 키를 다시 매핑하는 방법?

  22. 22

    슈퍼 타입 메서드를 호출하면 새로운 슈퍼 타입 객체가 생성됩니까?

  23. 23

    스칼라에서 슈퍼 타입을 찾는 방법

  24. 24

    Ubuntu 18.04에서 Dash를 열지 않는 오른쪽 슈퍼 키

  25. 25

    메뉴 링크가 작동하지 않음-여기에 슈퍼 코딩 newb

  26. 26

    슈퍼 키를 누른 상태에서 키보드 단축키 목록을 비활성화하는 방법은 무엇입니까?

  27. 27

    Neo4j 슈퍼 노드를 피하는 방법

  28. 28

    Java의 자식 클래스 메서드에서 super 키워드를 사용하여 슈퍼 클래스 생성자를 호출 할 수없는 이유는 무엇입니까?

  29. 29

    자바는 슈퍼 클래스에 메소드 추가

뜨겁다태그

보관