6

質問がすべてを物語っています。

専門家にとって、SUN Java 5 コンパイラーが (langspec に反して) 再帰的な注釈を受け入れるのに、後のコンパイラーが受け入れない理由はありますか? つまり、再帰的な注釈に対する議論は何でしょうか。

編集:再帰的な注釈は次のようなものです:

@Panel(layout=BorderLayout.class,
    nested={
        @Panel(region=NORTH, layout=FlowLayout.class, ...)
        @Panel(region=SOUTH, layout=FlowLayout.class, ...)
    }
)
4

4 に答える 4

1

私は非標準のアノテーションを使用します。ほとんどの場合、RPC呼び出しでのキャッシュや特定の初期化手順など、再帰プロセスのターゲットとしてクラスフィールドをマークします。しかし、再帰的なアノテーションは必要ありませんでした...そして、標準の初期化子の準備が整う前に、クラス定義時にアノテーションを処理する必要があるため、潜在的な問題があると思います...これがメインだと思いますアノテーションの内容を基本タイプに制限する理由...

于 2009-04-08T16:38:08.997 に答える
1

Java Web サービスの動作を変更するためにOracle Weblogic Serverで頻繁に使用されるため、私は最近アノテーションを使用しています。ここに定義されている注釈の完全なリストがあります。特に、私は彼らのPolicy アノテーションを最も多く使用することになります。それは、彼らのセキュリティ モデルが基づいているからです。ドキュメントページで詳細な例を見ることができます。

再帰的な注釈については聞いたことがありません。

于 2009-04-08T14:58:59.030 に答える
0

一般的に再帰的な注釈を許可することに対する適切な議論は知りませんが、禁止されていない場合、誤って記述した特定の病理学的ケースが (コンパイルまたは実行時に) 無限ループにつながる可能性があるということ以外にはありません。

javac は、仕様で要求されているという理由だけで、再帰的な注釈定義を禁止しています。JLS の将来の更新 (たとえば、JDK 7 の場合) で仕様が何を言うべきかは、別の問題です。

だから読んで投票してください:

http://bugs.sun.com/view_bug.do?bug_id=6264216

于 2010-01-23T19:08:37.670 に答える