2009-10-24 6 views

答えて

2

あなたは@deprecatedがコンパイル段階(IDE、コンパイラ)でのみ関心があると仮定していますが、その情報が必要なイメージング計測シナリオには及ばないと思います。

例えば、IDEは廃止予定のメソッドの呼び出しサイト数を通知できますが、廃止予定のメソッドでアプリケーションが費やした時間の割合はどのように決定しますか?

+2

RetentionPolicy.Classでもこれで十分です。 – Jorn

1

MyClass.classを廃止予定のメソッドでコンパイルするとします。 @Deprecatedアノテーションが失われた場合、別のクラスからそれらのメソッドを呼び出すと、IDEまたはコンパイラは警告できませんでした。

+4

RetentionPolicy.Classで十分です。 – meriton

+0

Mmm、それは本当です... – sinuhepop

1

ランタイムはもう1つのデザインタイムです。 APIを使用するコードを記述するときに使用します。

+0

Erm ...どういう意味ですか? APIを使用すると、デバッガを使用してそのAPIにアクセスしません。私は、そのAPIのクラスファイルを使用しますが、それはRetentionPolicy.Classでカバーされています。 – meriton

+0

たとえば、IDEのパレットからGUIコンポーネントを使用してフォームにドロップすると、コードが実行されます。 – JRL

1

良い質問です。私は説得力のあるシナリオを考え出しています。私が持っているのは、廃止予定のコードの使用を許可していないクラスローダーを使用するアプリケーションを想像できるということだけです。これにはRetentionPolicy.RUNTIMEが必要です。心に来て、私が持っているすべてです

...

1

カップル実用的な用途:Velocity

は、カスタム任意の非推奨メソッドにVelocityテンプレートから実際の呼び出しをログに記録Uberspectorを持つことができ、ログを読むだけで、メソッドがどこで使用されているのかを確認することができます。あなたが管理者でないなら@Deprecatedクラスのインスタンス化を防ぐシステムを作ることが可能かもしれないので、あなたが.class内容に基づいて、任意のクラスをインスタンス化禁止するセキュリティポリシーを持つことができますWicket

+0

の両方の点については、コンパイル時にチェックすることは可能です。依存性チェッカーは、あなたが上で言ったことを理解している場合は、確かに、トリックを行う必要があります – Ravisha

4

オブジェクトをインスタンス化して動作させるためのフレームワークとツールがいくつかあります。

たとえば、多くのJavaBean UIエディタは、ユーザーが設計しているUIを操作するときに、Beanのインスタンスを作成し、それらのインスタンスと対話します。

@Deprecatedアノテーションを実行時に使用できるようにすると、このようなツールでは、廃止予定のメソッド、イベント、ユーザーのプロパティにフラグを立てることができます。

関連する問題