Из официального глоссария Sun:
deprecation: указывает на класс, интерфейс, конструктор, метод или поле, которое больше не рекомендуется, и может прекратиться существовать в будущей версии.
blockquote>Из руководства how-and-when to deprecate:
Возможно, вы слышали термин «самоуничижительный юмор» или юмор, который сводит к минимуму важность докладчика. Устаревший класс или метод подобны этому. Это уже не важно. На самом деле так важно, что вы больше не должны его использовать, поскольку он был заменен и может перестать существовать в будущем.
blockquote>Аннотации
@Deprecated
пошли дальше и предупреждать об опасности:Программный элемент, аннотированный
blockquote>@Deprecated
, является тем, что программистам не рекомендуется использовать, как правило, потому что это опасно или потому, что существует лучшая альтернатива .Ссылки
- java.sun.com Глоссарий
- Языковой справочник / Как и когда отказаться от API
- Тип аннотации Устаревший API
Правильно или неправильно?
Вопрос о том, правильно или неправильно использовать устаревшие методы, должен быть рассмотрен на индивидуальной основе. Вот ВСЕ кавычки, в которых слово «устарело» появляется в Эффективное Java 2nd Edition :
Пункт 7: Избегайте финализаторов: только методы, которые утверждают, что гарантируют завершение, -
System.runFinalizersOnExit
и его злой близнецRuntime.runFinalizersOnExit
.Пункт 66: Синхронизация доступа к общим изменяемым данным: библиотеки предоставляют метод
Thread.stop
, но этот метод давно устарел, поскольку он по своей сути небезопасен - его использование может привести к повреждению данных.Пункт 70: Безопасность потока документа: метод
System.runFinalizersOnExit
является нить-враждебным и устарел.Пункт 73: Избегайте групп потоков: они позволяют применять некоторые примитивы
blockquote>Thread
к кучке потоков одновременно. Некоторые из этих примитивов устарели, а остальные редко используются. [...] группы потоков устарели.Итак, по крайней мере, со всеми вышеперечисленными методами, очевидно, неправильно использовать их, по крайней мере, согласно Джошу Блоху.
С помощью других методов вам нужно будет рассматривать проблемы индивидуально и понимать, ПОЧЕМУ они были устаревшими, но, вообще говоря, когда решение об осуждении оправдано, оно будет склоняться к неправильному праву, чтобы продолжать использовать их.
Связанные вопросы
Вы можете попробовать это
SUM(CASE WHEN CHARINDEX(AREAS.RA_NAME, AD_Results.[Parent Container]) > 0 THEN 1 ELSE 0 END) AS RA_AD_Objects
После уик-энда анализа я получил ответ:
SELECT
AREAS.RA_NAME
, AREAS.RA_DESC
, COUNT( DISTINCT AD_Results.Name) AS RA_AD_Objects
, COUNT( DISTINCT tblAssets.AssetID) AS RA_LS_Objects
FROM AREAS
JOIN AD_Results ON CHARINDEX(AREAS.RA_NAME, AD_Results.[Parent Container]) > 0
LEFT JOIN tblADComputers ON CHARINDEX(AREAS.RA_NAME, tblADComputers.OU) > 0
LEFT JOIN tblAssets ON tblAssets.AssetID = tblADComputers.AssetID
GROUP BY AREAS.RA_NAME, AREAS.RA_DESC
ORDER BY AREAS.RA_NAME
GO
Весь СЧЕТ (СЛУЧАЙ ... перепутал его, и он не был действительно необходим.