2013-06-15 3 views
0

자바에서 약간의 경험이있는 스칼라를 배우기 시작했습니다. 스칼라의 데이터 유형이 자바의 Collection <?> args 인 경우 무엇이 될까요? ("알 수없는 수집"로 발음)콜렉션 <?> (스칼라)

답변

5

먼저, 스칼라 컬렉션은 자바 컬렉션에서 별도의 라이브러리를 형성한다. 물론 Scala의 Java 콜렉션을 사용할 수 있지만 일반적으로 이는 일부 Java API와 상호 운용되는 코드에서 수행되며 순수한 스칼라 코드는 대개 스칼라 콜렉션을 사용합니다.

귀하의 질문에 스칼라에서 와일드 카드 문자는 밑줄 문자로 표시되므로 예, 자바 클래스 java.util.Collection<?>은 스칼라에서 java.util.Collection[_]처럼 보일 것입니다. 내가 말했듯이, 당신은 더 나은 순수 스칼라에서 자바 컬렉션을 사용하지,

Collection<? extends SomeClass> -> Collection[_ <: SomeClass] 
Comparator<? super SomeClass>  -> Comparator[_ >: SomeClass] 

그러나 :

BTW, 당신은 형의 경계를 원하는 경우, 즉, Collection<? extends SomeClass> 같은이며, 그들은 다음과 같은 구문을 사용하여 달성된다 왜냐하면 그것들은 스칼라보다 훨씬 편리하지 않기 때문이다. 스칼라 컬렉션은 더 복잡한 계층 구조를 가지고 있으며, Java Collection과 직접적인 동일한 기능은 없다. Scala 컬렉션에 대한훌륭한 튜토리얼, 특히 this 페이지를 읽을 수 있습니다. 여기에는 스칼라 컬렉션의 계층 구조가 표시됩니다.

2
Collection <?> args 

그것은 쓰여 컬렉션, 즉 그 요소 유형의 모든 항목과 일치 모음. 분명한 이유로 와일드 카드 유형이라고합니다. Scala Existential types를 들어

Read more about wildcards here

Usage of WildCards in Scala 모든

+0

및? ........... –

+0

"나는 콜렉션 중 하나 인 자바의 스칼라 데이터 유형이 무엇일까?"라는 질문을 던졌습니다. –

+0

감사합니다. 그래서 그것은 Collection [?]'이어야만합니까? –

관련 문제