在GWT中,为什么方法不应该返回一个接口?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (31)

据我在视频中所听到的,这与GWT Java到Javascript编译器有关。

  • 这个选择背后的原因是什么?
  • 方法签名中的接口对编译器有什么影响?
  • 哪些方法可以返回接口而不是具体类型,哪些方法更适合返回具体实例?
提问于
用户回答回答于

正如所说,这与gwt编译器有关。

编辑:然而,正如Daniel在下面的评论中所指出的,这并不适用于一般的gwt-编译器,而只适用于使用GWT-RPC。

如果将List而不是ArrayList声明为返回类型,则gwt-编译器将在编译代码中包含完整的列表层次结构(即所有类型的实现列表)。如果使用ArrayList,编译器只需要包含ArrayList层次结构(即实现ArrayList的所有类型--通常只是ArrayList本身)。使用一个接口而不是一个具体的类,您将在编译时间和所生成代码的大小方面付出代价(因此,每个用户在运行应用程序时必须下载多少代码)。

询问了原因:使用接口(而不是具体的类),编译器在编译时不知道这些接口的实现将被使用。因此,它包括所有可能的实现。

用户回答回答于

在大约7分钟的时间点上,发言地址“RPC类型爆炸”:

出于某种原因,我认为GWT编译器会再次优化它.

扫码关注云+社区