1

我知道 GWT 不模拟这种方法,但我需要提供它的功能的 smth。我尝试了下一种方法:

    private static <T extends Widget> T createWidget(Class<T> widgetClass) {
        return GWT.create(widgetClass);
    }

但是当我尝试编译它时,我得到一个错误: 只有类文字可以用作 GWT.create() 的参数

那么,我怎样才能编写一个可以模拟的上述方法Class#newInstance呢?

4

1 回答 1

1

GWT.create()总是需要类文字作为参数,这意味着你必须传递 this:GWT.create(MyClass.class)而没有其他东西。

之所以如此,是因为 gwt 编译器必须在编译时决定要选择哪个类,请注意,在您的代码中,该类是在运行时传递的。

如果您打算使用GWT.create减少且众所周知的类集,则可以执行以下操作:

private static <T extends Widget> T createWidget(Class<T> widgetClass) {
    if (ClassA.class.equals(widgetClass))  {
       return GWT.create(ClassA.class);
    } else if (ClassA.class.equals(widgetClass))  {
       return GWT.create(ClassB.class);
    }
    return null;
}
于 2013-04-05T03:56:34.163 回答