В Scala импорт подстановочных знаков является обязательным условием, так как многие библиотеки ожидают, что их неявные преобразования будут находиться в области видимости, но их не всегда удобно называть.Итак,
import collection.JavaConversions._
- отличная идея, тогда как
import collection.JavaConversions.{asJavaConcurrentMap,enumerationAsScalaIterator,...}
невероятно неловко.Еще лучше то, что в Scala вы можете поместить свой импорт в любую область:
package mypackage {
class MyClass {
def myGraphicalWidgetHandler {
import java.awt._
...
}
...
}
...
}
, которая действительно помогает сохранить беспорядок в пространстве имен по всему файлу.И вы можете выборочно переименовывать части импорта, которые, как вы знаете, будут конфликтовать:
import java.awt.{List => AwtList, _}
Напротив, в Java вы ограничены глобальной областью для импорта и не можете переименовывать их;у вас также нет неявных преобразований, так что можно использовать только те вещи, которые вы ищете.С другой стороны, у вас есть мощная поддержка IDE, которая поможет найти класс, который вы ищете, и импортировать только его для вас.Таким образом, для Java есть разумный аргумент в пользу того, что вы должны позволить вашей IDE использовать именно то, что вам нужно, а не принимать все.Лично я все еще нахожу это слишком неловким и просто большую часть времени использую импорт подстановочных знаков.