2013-06-15 4 views
0

Я только начал изучать Scala с небольшим опытом работы на Java. Интересно, каким будет тип данных Scala для Java один из Collection <?> args?Collection <?> в Scala

ответ

5

Прежде всего, коллекции Scala образуют отдельную библиотеку из Java коллекций. Конечно, вы можете использовать коллекции Java из Scala, но это обычно делается в коде, который взаимодействует с некоторыми Java API, а чистый Scala-код обычно использует коллекции Scala.

Что касается вашего вопроса, подстановочные знаки обозначаются символом подчеркивания в Scala, поэтому да, класс Java java.util.Collection<?> будет выглядеть как java.util.Collection[_] в Scala.

Кстати, если вы хотите границы типа, то есть, что-то вроде Collection<? extends SomeClass>, то они достигаются с помощью следующего синтаксиса:

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

Однако, как я сказал, что лучше не использовать Java-коллекции в чистом Scala потому что они гораздо менее удобны, чем их коллеги из Scala. Коллекции Scala имеют более сложную иерархию, но нет прямого эквивалента Java Collection. Вы можете прочитать this отличный учебник по коллекциям Scala, особенно this, который показывает иерархию коллекций Scala.

2
Collection <?> args 

Это написано Коллекция (произносится как «коллекция неизвестно»), то есть, коллекция которого тип элемента соответствует любому. Это называется подстановочным типом по понятным причинам.

Read more about wildcards here

Для Scala Existential types и Usage of WildCards in Scala

+0

и? ........... –

+0

Я задал вопрос: «Интересно, каков будет тип данных Scala для Java один из Collection args?» –

+0

спасибо. так что это должно быть 'Collection [?]'? –

Смежные вопросы