Java`sort` 서명을`? 슈퍼 T`에서 스칼라로 (제네릭)

남자 이름

문제 :

Java 서명 마이그레이션에 대한 이 질문 살펴보기

public <A extends Comparable<? super A>> void sort(List<A> list) { }

스칼라에게는 피할 수있는 방법이없는 것 같습니다.

illegal cyclic reference involving type T

이렇게 문자 그대로 번역하면 오류가 발생합니다.

def compilerFailure[T <: Comparable[_ >: T]](a: Array[T]): T = { }

해결 방법은 대신이 작업을 수행하는 것 같습니다.

def workaround[A <: Comparable[U], U >: A](list: List[A]) { }

바이트 코드에서 Java로 다시 왕복하면 ( super부분 이 느슨해집니다 )

public <T extends Comparable<U>, U> void scalaToJava(List<U> a) { }

내 질문 :

는 IS scalaToJava다음 버전에 상응?

public <T extends Comparable<?>> void sort(List<T> a) {

나는 때 생각하지 U억제 할 수없는, 그것은뿐만 아니라 수 있습니다 ?또는 Object더? 그렇다면 Scala workaround버전 은 다음 과 같습니다.

def sort[A <: Comparable[_]](list: List[A]) { }

그것들은 모두 내 사용 사례에 맞게 컴파일되는 것 같습니다 (컬렉션에 다른 하위 유형을 넣고 정렬 할 수 있음). NB. 나는 역학과 순환 참조 오류의 원인에 대해 궁금하며 Scala가 공분산 등의 측면에서 더 나은 대안을 제공한다는 것을 알고 Ordering있습니다.

마틴 링
public <T extends Comparable<?>> void sort(List<T> a)

예를 들어 List<A> extends Comparable<Int>비교 함수가 유형 값에 적용되지 않는 위치 를 전달할 수 있기 때문에 너무 일반적 List<A>입니다.

해결 방법을 올바르게 선택했지만 약간의 실수를했습니다. 그것은해야한다:

def workaround[A <: Comparable[A], U >: A](list: List[U]) { }

그러나 이것은 이러한 종류의 상황이 일반적으로 Scala에서 해결되는 방식이 아닙니다.

을 참조하십시오 scala.math.Ordering.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

자바 필적과 제네릭을 비교 <? 슈퍼 T> 다른 클래스에서

분류에서Dev

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

분류에서Dev

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

분류에서Dev

클래스 서명에서 스칼라 제네릭 이해

분류에서Dev

명시 적 캐스팅없이 슈퍼 제네릭 목록을 전달

분류에서Dev

스칼라 : 슈퍼 메서드에 옵션 인수 추가

분류에서Dev

Javapoet 슈퍼 클래스 제네릭

분류에서Dev

스칼라에서 다른 데이터 유형을 제네릭으로 래핑

분류에서Dev

인터페이스를 사용하지 않고 추상 슈퍼 클래스에서 사용되는 제네릭 유형에서 속성을 가져 오나요?

분류에서Dev

자바 제네릭 바운드 사용량을 절감? 슈퍼 T

분류에서Dev

Kotlin에서 슈퍼 클래스의 속성을 재정의 할 때보다 구체적인 제네릭 유형을 선언하는 방법이 있나요?

분류에서Dev

Typescript : 슈퍼 클래스 메서드 서명을 몰라도 슈퍼 클래스 메서드 재정의

분류에서Dev

스칼라에서 슈퍼 클래스 적용 메서드 호출

분류에서Dev

Java에서 제네릭 캐스팅

분류에서Dev

스칼라 : 패턴 매칭에서 슈퍼 타입 연산자 사용

분류에서Dev

제네릭 클래스에서 Java 제네릭 클래스 인스턴스화

분류에서Dev

Eclipse에서 GWT 슈퍼 소스 처리

분류에서Dev

슈퍼 클래스 서브 클래스 생성자 java

분류에서Dev

제네릭 메서드에 제네릭 클래스 객체 보내기 (Java)

분류에서Dev

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

분류에서Dev

자바 제네릭 클래스의 슈퍼 클래스

분류에서Dev

pdf에서 텍스트를 추출 할 때 슈퍼 스크립트 제외

분류에서Dev

전달 된 객체에서 슈퍼 확장 클래스를 설정하는 Java

분류에서Dev

Java 제네릭 클래스에서 Integer를 int로 변환

분류에서Dev

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

분류에서Dev

스칼라에서 슈퍼 유형 만 알고있는 유형 클래스를 암시 적으로 호출하는 방법은 무엇입니까?

분류에서Dev

제네릭 래퍼 인터페이스 유형을 어떻게 정의하고 Java에서 메소드 반환 유형으로 사용합니까?

분류에서Dev

동일한 서명을 사용하여 제네릭 위임을 비 제네릭으로 캐스팅

분류에서Dev

Java에서 생성자의 기본값으로 하위 클래스를 재정의하는 슈퍼 클래스

Related 관련 기사

  1. 1

    자바 필적과 제네릭을 비교 <? 슈퍼 T> 다른 클래스에서

  2. 2

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

  3. 3

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

  4. 4

    클래스 서명에서 스칼라 제네릭 이해

  5. 5

    명시 적 캐스팅없이 슈퍼 제네릭 목록을 전달

  6. 6

    스칼라 : 슈퍼 메서드에 옵션 인수 추가

  7. 7

    Javapoet 슈퍼 클래스 제네릭

  8. 8

    스칼라에서 다른 데이터 유형을 제네릭으로 래핑

  9. 9

    인터페이스를 사용하지 않고 추상 슈퍼 클래스에서 사용되는 제네릭 유형에서 속성을 가져 오나요?

  10. 10

    자바 제네릭 바운드 사용량을 절감? 슈퍼 T

  11. 11

    Kotlin에서 슈퍼 클래스의 속성을 재정의 할 때보다 구체적인 제네릭 유형을 선언하는 방법이 있나요?

  12. 12

    Typescript : 슈퍼 클래스 메서드 서명을 몰라도 슈퍼 클래스 메서드 재정의

  13. 13

    스칼라에서 슈퍼 클래스 적용 메서드 호출

  14. 14

    Java에서 제네릭 캐스팅

  15. 15

    스칼라 : 패턴 매칭에서 슈퍼 타입 연산자 사용

  16. 16

    제네릭 클래스에서 Java 제네릭 클래스 인스턴스화

  17. 17

    Eclipse에서 GWT 슈퍼 소스 처리

  18. 18

    슈퍼 클래스 서브 클래스 생성자 java

  19. 19

    제네릭 메서드에 제네릭 클래스 객체 보내기 (Java)

  20. 20

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

  21. 21

    자바 제네릭 클래스의 슈퍼 클래스

  22. 22

    pdf에서 텍스트를 추출 할 때 슈퍼 스크립트 제외

  23. 23

    전달 된 객체에서 슈퍼 확장 클래스를 설정하는 Java

  24. 24

    Java 제네릭 클래스에서 Integer를 int로 변환

  25. 25

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

  26. 26

    스칼라에서 슈퍼 유형 만 알고있는 유형 클래스를 암시 적으로 호출하는 방법은 무엇입니까?

  27. 27

    제네릭 래퍼 인터페이스 유형을 어떻게 정의하고 Java에서 메소드 반환 유형으로 사용합니까?

  28. 28

    동일한 서명을 사용하여 제네릭 위임을 비 제네릭으로 캐스팅

  29. 29

    Java에서 생성자의 기본값으로 하위 클래스를 재정의하는 슈퍼 클래스

뜨겁다태그

보관