Ничто не является подтипом все, так что в каком-то смысле счетчик часть Any, которая является супер-типа все. Ничто не может быть создано, вы никогда не будете держать объект Nothing. Есть две ситуации (я знаю), где нет ничего на самом деле полезно:
- Функция, которая никогда не возвращается (в отличие от функции, которая не возвращает полезного значение, которое будет использовать блок вместо), который происходит для бесконечных циклов, бесконечной блокировки, всегда бросает исключение или выходит из приложения
- В качестве способа указать тип пустых контейнеров, например Нил или Нет. В Java у вас не может быть ни одного объекта Nil для универсальных неизменяемых списков без кастинга или других трюков. Если вы хотите создать список дат, даже пустой элемент должен иметь правильный тип, который должен быть подтипом Дата. В качестве даты и, например, Integer не использует общий подтип в Java, вы не можете создать такой экземпляр Nil без трюков, несмотря на то, что ваш Nil даже не имеет значения. Теперь Scala имеет этот общий подтип для всех объектов, поэтому вы можете определить Nil как
object Nil extends List[Nothing]
, и вы можете использовать его для запуска любого списка, который вам нравится.
К вашему второму вопросу: Да, это было бы полезно. Я бы предположил, что уже есть компилятор для включения этих предупреждений, но я не уверен.
Правильный ответ на мой неясный вопрос, на данный момент достаточно. :) –