【问题标题】:Iterate through all SimpleTextBox's遍历所有 SimpleTextBox
【发布时间】:2012-08-10 11:37:44
【问题描述】:

是否可以遍历特定类的所有“实例”?我环顾四周,想出了:

        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

任何帮助将不胜感激!

【问题讨论】:

    标签: java class gwt object loops


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 非常感谢回复,会遍历容器中的组件。 +1 :)
    • GWT 不支持大多数反射,因为这需要编译所有可能的类型/字段/方法,因此编译器无法删除大量代码。 GWT 中的java.lang.Class 不支持getFields 等。有关 JRE 支持的更多详细信息,请参阅 developers.google.com/web-toolkit/doc/latest/RefJreEmulation,特别是有关 Class 的详细信息。
    猜你喜欢
    • 2015-07-12
    • 1970-01-01
    • 2021-05-31
    • 2015-02-09
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-24
    相关资源
    最近更新 更多