(Q1) >> Это особый случай, который работает только для логического типа. << </p>
Компилятор не делает вывод, что тип вашей коллекции Java имеет тип Collection. Известно только, что это коллекция с элементами типа some .
(Q2) >> или есть какой-то способ явно указать тип? << </p>
Нет. Экзистенциальный тип не должен быть предоставлен. Это не свободная переменная для привязки (поскольку она уже связана).
Посмотрите на это так: предположим, что вы смогли предоставить тип. Затем вы ожидаете, что компилятор проверит, что предоставленный тип соответствует типу элементов в вашей коллекции Java. Но компилятор не может это определить. Поэтому, если они не будут совпадать, вы все равно узнаете об этом только во время выполнения.
Если вы хотите сообщить компилятору Scala, что вы знаете, что элементы в java-коллекции имеют тип String (например, вы хотите вызвать x.length), то вы можете привести элементы к asInstanceOf [String]. Но это не введет безопасность типов. Вы снова только узнаете во время выполнения, если это будет неправильно.