遍历所有SimpleTextBox

时间:2012-08-10 11:37:45

标签: java class gwt object loops

是否可以通过特定类的所有'实例'进行迭代?我一直在环顾四周,想出了:

        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

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

首先,这个错误很奇怪,你应该能够编译它。也许这是一个不支持该方法的GWT问题,但在普通的旧java中它可以工作。

但它不会像你期望的那样起作用。它将为您提供类中定义的字段(“属性”),而不是类本身的实例(UI概念中的字段与OP概念中的字段不同)。

到目前为止,没有简单的方法来获取类的所有当前实例。

如果您想要的是(看起来像),请在一个容器中获取所有复选框并执行某些操作,也许您要做的是检索容器的所有组件并检查它们使用instanceof运算符。