編集 -- @Uri は、これが注釈の乱用であることを正しく指摘しました。注釈でメニュー データ自体を実際に作成しようとするのはばかげています。
それらはバインドには適していますが、メソッド名に反映するよりも明示的で柔軟であるため、テキストデータをメソッド (@Menu ("File") 部分) にリンクするためにそれらを使用することに固執すると思います。また、私はそれをいじることでかなり学びました。数日以内に回答としてコードをここに投稿します。
--元の投稿--
私はこれらの新しい注釈を使用していませんが、驚くほど興味深いものに見えます。ただし、構文を理解するのに苦労しています(または、より適切には、それを使用する最良の方法です)。
この質問に答えてコードを書いているときに、私のメソッドがかなり時代遅れであることに気づきました。
以前は、文字列を解析してメソッド構造を定義し、リフレクションを使用してそれをクラスに渡していましたが、注釈を使用するとメニュー構造がはるかに改善されると思います。
ファイル内のテスト クラスを次のようなものに置き換えたいと思います。
@TopMenu("File,Edit")
@Menu(name="File","Save,Load,Print,Preview,Quit")
@Menu(name="Print","Preview,Print")
@Menu(name="Edit","Copy,Paste")
public class TestMenu {
@MenuItem ("Save")
public void save() {
System.out.println("saved");
}
@MenuItem ("Load")
public void load() {
System.out.println("loaded");
}
...
クラス全体を、クラス インスタンスにバインドされた JMenuBar を作成して返すメソッドに、それ以上の入力なしで渡します。
最初の問題は、文字列の「デフォルト」を渡す方法がわからないことです。それらはすべて、("value") だけでなく (attribute="value") を持ちたいのですが、これを行うことはできますか? 私はそれがなくても生きていけるが、少し冗長だ。括弧や引用符を取り除くことができればさらに良いのですが、息を止めていません (そうするには、メニュー項目ごとに個別のインターフェイスを定義する必要があると思いますが、それは受け入れられません) )。
2 つ目は、1 つのクラスに複数の @Menu タグを配置するのが好きではありません。単一の文字列を解析することでこれを回避できましたが、別の方法があるかどうか疑問に思っていました。
最も重要なのは、すでにこれを行うライブラリはありますか? (誰も思いつかない場合は、他の誰かが興味を持っている場合に備えて、動作するようになったらこのスレッドにコードを公開します。)