tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:パッケージ開発で使えるDeprecated アノテーション

f:id:tyoshikawa1106:20150707232549p:plain

Deprecated アノテーション

Deprecated アノテーションは管理パッケージ化したクラスの参照されないメソッド、クラス、例外、列挙、インターフェース、変数を特定するためのアノテーションです。


使用例は開発者ガイドに載っているものですがこちら。@deprecatedを宣言します。
f:id:tyoshikawa1106:20150707233107p:plain


管理パッケージ化されたクラスなら適当に試せるかなと思ったのですが、『Only managed identifiers can be marked deprecated』のエラーになりました。
f:id:tyoshikawa1106:20150707233345p:plain


一度リリースされたリソースにのみ指定ができるみたいです。また、他で参照されているものにも指定できなそうです。(もしかするとGlobalのものにのみ使用できるのかも...)


リリースノートに記載されていた注意事項です。使用時のルールは少し複雑そうでした。

  • 非管理パッケージには、deprecated キーワードを使用するコードを含めることはできません。
  • Apex 項目を廃止する場合、廃止する識別子を参照するすべての global アクセス修飾子も廃止する必要があります。署名や、入力引数またはメソッドの戻り値のいずれかで廃止する種類を使用する global メソッドも廃止する必要があります。パッケージ開発者は、メソッドまたはクラスなどの廃止された項目を、内部で引き続き参照できます。
  • webService メソッドおよび変数は廃止できません。
  • enum は廃止できますが、各 enum 値は廃止できません。
  • インターフェースは廃止できますが、インターフェースの各メソッドは廃止できません。
  • 抽象クラスは廃止できますが、抽象クラスの各抽象メソッドは廃止できません。
  • Apex の項目を廃止するパッケージをリリースした後は、deprecated アノテーションを削除しても Apex のその項目の廃止を取り消すことはできません。