Сижу перед проектом около 10000 LoC. Мне нужно обновить этот проект со Scala 2.9 до 2.10. Это было хорошо сделано, но я получил много предупреждений об устаревании из-за манифестов.
После использования функции поиска stackoverflow и многих других сайтов у меня не так много вопросов. Хочу подвести итог; ключевые моменты:
TypeTags и ClassTags намного лучше, чем Manifests и ClassManifest. В частности, вы можете использовать их как синонимы (TypeTags ‹-> Manifests и ClassTags ‹-> ClassManifest)
TypeTags более мощные, чем ClassTags, соответственно ClassTags более ограничены TypeTags. Первый вопрос: В этом проекте часто используется метод
manifest[T].erasure.getSimpleName
. Теперь я не могу переключить это только наtypeTag[T].runtimeClass.getSimpleName
, потому что код не будет компилироваться, но сclassTag[T].runtimeClass.getSimpleName
он будет компилироваться. Повлияет ли это на семантику? (Примечание. Методerasure
также устарел; вместо него следует использоватьruntimeClass
)Второй вопрос: Проверка типов манифестов в Scala 2.9 была вроде:
manifest[T] <:< manifest[A]
. В Scala 2.10 я бы написал этоtypeOf[T] <:< typeOf[A]
. Но<:<
устарел ?!Могу ли я преобразовать TypeTag в ClassTag? То есть: если я использую манифесты только для проверки типов (№ 3) и извлечения имен (№ 2): Могу ли я переименовать каждый Manifest / ClassManifest в ClassTag?