Посмотрите на обоснование для NonNull
, являющегося !Send
:
NonNull
указатели не Send
, потому что данные, на которые они ссылаются , могут быть псевдонимом.
Но NonNull
в LinkedList
является частной реализацией.Если этот тип знает, что внутренний тип T
равен Send
, и его использование также является Send
-безопасным (без небезопасности в общедоступном API), то он может повторно ввести черту Send
.
Эта гарантия в основном сводится к тому, что вы не можете получить изменяемые псевдонимы для внутренних типов;и обеспечение отсутствия неожиданной внутренней изменчивости (получите изменяемую ссылку от неизменной).
Эти гарантии не даются NonNull
, но они есть в LinkedList
.