1

私は改札で検索機能を開発しています。このDropDownChoiceクラスは、検索項目のどのフィールドを検索するかを選択するために使用されます。ドロップダウン名が検索されたクラスから直接取得されるようにこれを実現する方法。

FooBar変数fooとを含むクラスがあるとしましょうbar。選択基準フィールドのいずれかを選択したい場合、リソースファイルから名前を取得してリソースファイルに次のような値を与える方法

   FooBar.foo="Search for foo"
   FooBar.bar="Search for bar"

リソースファイルはそのようなものでなければなりませんが、Javaクラス側でこれをどのように配線するのですか?

4

1 に答える 1

1

まず、このようにフィールドとその値を取得できます

import java.lang.reflect.Field;

public class FooBar extends AbstractFooBar{
public String foo = "Search for foo";
public String bar = "Search for bar";

public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
    Field[] fields = FooBar.class.getFields();
    // Field[] fields = AbstractFooBar.class.getFields();
    for (Field field : fields) {
        System.out.println(field.get(new Object()).toString());
    }
}

しかし、ご想像のとおり、抽象化を使用することはできません。また、すべてのフィールドが公開されている必要があります。

リソース ファイルを使用して、クラスを初期化できます。リフレクションでフィールドを取得した後、IChoiceRenderer を使用してフィールドを DropDownChoice に渡すことができます。

DropDownChoice タイプは Field にすることができ、フィールド リストを指定して初期化できます。次に、IChoiceRenderer でモデル オブジェクトを取得できます。

それが役立つことを願っています。

于 2012-06-21T14:51:15.957 に答える