0

特定のクラスのすべての「インスタンス」を反復することは可能ですか? 私は周りを見回して、思いついた:

        for (Field field : SimpleCheckBox.class.getFields()) {
        System.out.println(field.getName());
    }

すべてのフィールドを個別に選択することなく、すべてのフィールドを調べて、それらにいくつかの機能を実装したいと考えています。上記のコードはエラーを返します:

    java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:396)
at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:525)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.Error: Unresolved compilation problem: The method getFields() is undefined for the type Class

どんな助けでも大歓迎です!

4

1 に答える 1

1

まず、そのエラーは奇妙です。コンパイルできるはずです。メソッドをサポートしていないというGWTの問題かもしれませんが、普通の古いJavaでは機能します。

しかし、期待どおりには機能しません。クラス自体のインスタンスではなく、クラスで定義されたフィールド(「属性」)を提供します(UIコンセプトのフィールドはOPコンセプトのフィールドと同じではありません)。

これまでのところ、クラスの現在のインスタンスをすべて取得する簡単な方法はありません。

1 つのコンテナー内のすべてのチェックボックスを取得して何らかの操作を実行する必要がある場合は、コンテナーのすべてのコンポーネントinstanceofを取得し、オペレーターでそれらをチェックすることをお勧めします。

于 2012-08-10T11:49:42.280 に答える