6

私はJava初心者なので、私の質問は簡単なもののように見えるかもしれません。しかし、私はあなたたちからのいくつかの指示が必要です。

これが私の質問です:私はたくさんのメソッドを持つクラスを持っています、私はこれらのメソッドをcomboxのユーザーに与えて、それらの選択に基づいていくつかのコードが実行されるように選択したいと思います。これで、スイッチの選択方法を記述してこれを行うことができます。選択に基づいて、スイッチを使用して特定のメソッドを実行します。

しかし、私の関数のリストは200にかなり長いので、あなたへの私の質問は次のとおりです。これを行うためのよりスマートな方法はありますか。私を正しい方向に向けるだけで、残りはやってみます。

4

5 に答える 5

8

リフレクションを使用できます。具体的には、 Class.getMethods()またはClass.getDeclaredMethods()

理解していない場合は、それらの違いを理解していることを確認してください(これについては、リンクされているjavadocsを読んでください)。恐れずに質問してください。

于 2012-06-13T13:54:25.167 に答える
2

あなたが正しくやりたいことを理解しているとすれば、JavaReflectionを調べることから始めるのが最適だと思います。

于 2012-06-13T13:54:36.977 に答える
2

メソッドの一覧表示と呼び出しの両方にReflectionを使用できます

http://docs.oracle.com/javase/tutorial/reflect/index.html

Javaリフレクションを使用してeval()メソッドを作成する

于 2012-06-13T13:54:59.770 に答える
1

リフレクションを使用することはできますが(Googleで多くの情報を見つけることができます)、ユーザーにメソッドを単純に示すことはお勧めできません。より複雑なアプリケーションでは、ユーザーが望むもののプレゼンテーションと実際の実行を分離するようにしてください。

于 2012-06-13T13:56:06.943 に答える
0

各選択は、関数ポインターのセットとして構築された列挙型で表すことができます。

public enum FunctionPointer {
F1 {
    public SomeObject doFunction(args) {
        YourClass.doMethod(args);
    }
},
//More enum values here...
}

構文には少し手間がかかりますが、クライアントでは次のように呼び出すことができます

FunctionPointer.F1.doFunction("abc");
于 2012-06-13T15:03:47.823 に答える