GWT Arrays.asList不适用于接口类型

GWT Arrays.asList不适用于接口类型,gwt,Gwt,在一个GWT项目(2.7.0)上工作时,我经历了一个非常奇怪的客户机代码行为 以下代码抛出错误“严重:(引用错误):Ljava_io_可序列化_2_classLit_0_g$未定义com.google.gwt.core.client.JavaScriptException:(引用错误):Ljava_io_可序列化_2_classLit_0_g$未定义” 使用具有接口类型的参数调用Arrays.asList()时会发生错误。 这是预期行为还是GWT错误 // Working Integer n1

在一个GWT项目(2.7.0)上工作时,我经历了一个非常奇怪的客户机代码行为

以下代码抛出错误“严重:(引用错误):Ljava_io_可序列化_2_classLit_0_g$未定义com.google.gwt.core.client.JavaScriptException:(引用错误):Ljava_io_可序列化_2_classLit_0_g$未定义”

使用具有接口类型的参数调用
Arrays.asList()
时会发生错误。 这是预期行为还是GWT错误

// Working
Integer n1 = 1;
Arrays.asList(n1);
// Not working
Serializable n2 = 1;
Arrays.asList(n2);

嗯,Arrays.asList的典型用法是

Object myObj = new Object();
List theList = Arrays.asList(new Object[] {myObj});
这在GWT中适用于任何类型的接口/类/枚举

编辑:我已经用GWT 2.5.1对此进行了测试:

public class Foo implements EntryPoint {    

  public static interface MyInterface {
  }

  public static class MyObject implements MyInterface {
  }

  public void onModuleLoad() {
    MyInterface myObject = new MyObject();
    List<MyInterface> myList = Arrays.asList(myObject);

  }

}
公共类Foo实现入口点{
公共静态接口MyInterface{
}
公共静态类MyObject实现MyInterface{
}
moduleload()上的公共void{
MyInterface myObject=新的myObject();
List myList=Arrays.asList(myObject);
}
}
问题不可能存在于其他地方吗?

GWT 2.7的超级开发模式(从类文本字段中的
\u g$
中,我认为这就是您正在使用的)出现了其他类似的问题,但在编译时问题消失了

如果这确实是您所看到的,那么问题似乎已在2.8中得到解决,但尚未发布:


这种行为肯定不是预期的,但是如果您可以确认在为生产和GWT 2.8编译时,这种行为是正确的,那么我们至少知道错误已经修复。

是的,这是因为“对象”不是接口。我知道这个解决方法,但我不想找一个workaround@Example当前位置我试过了,它确实有效。但它不适用于Serializable。显然,只有当接口被GWT广泛使用或实现时,问题才会出现。不工作的接口例如:Runnable、HasText、Hassellaha!我只记得GWT中的Serializable没有很多兼容性,如果可能的话,尝试使用IsSerializable。如果您想了解更多关于这方面的信息,请阅读
Serializable
类型对RPC非常有效,并且至少有GWT1.5左右。如果问题是针对接口的,那么IsSerializable也会有同样的问题,因为它也只是一个没有定义方法的标记接口,等等@ColinAlworth,好的。那一定是我忘记它的原因。