Infinito Nirone 7

白羽の矢を刺すスタイル

Deprecated アノテーションが deprecated になってしまったのを undeprecated した流れ

Android 12 の preview 段階で @Deprecated アノテーションが deprecated になったのがちょっと話題になりましたが、Android 12 Beta 1 では deprecated になったのを undeprecated にしたことが What's new in Android で語られました。

youtu.be

@Deprecated アノテーションは少し特殊で、Javadoc に @deprecated タグを記述することでもクラスやメソッドなどが非推奨であることを示します。 Android 12 では @Deprecated アノテーションに変更があり、forRemoval メソッドと since メソッドが増えています。これらを用いて、非推奨となったクラスやメソッドが将来的に削除予定かどうかを簡単に示せるようになります。

developer.android.com

このメソッドの追加にあわせて @Deprecated アノテーションの Javadoc も拡充されていて、より詳しく @Deprecated アノテーションの役割や挙動を説明するようになりました。 ここで Javadoc 内の @Deprecated アノテーションを表記するために {@code @Deprecated} と言う形でコードブロックの記法を使うようになりましたが、このコードブロック内の @Deprecated が Javadoc の @deprecated タグと解釈され、結果として @Deprecated アノテーションそのものが deprecated と解釈されてしまった、というのが @Deprecated アノテーションが deprecated となった経緯のようです。

うっかり deprecated になってしまった @Deprecated を undeprecated にするため、コードブロック内であっても @ をエスケープする(@にする)差分が作られ、晴れて undeprecated することができたようです。