首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在GWT中,为什么方法不应该返回接口?

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

Stack Overflow用户
提问于 2011-05-19 21:13:46
回答 2查看 2.3K关注 0票数 18

this video from Google IO 2009中,演示者很快就会说方法的签名应该返回具体的类型,而不是接口。

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

  • 此选择背后的原因是什么?
  • 方法签名中的接口对编译器有什么作用?
  • 哪些方法可以返回接口而不是具体类型,哪些方法最好返回具体实例?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-19 21:45:07

正如您所说的,这与gwt编译器有关。编辑:然而,正如Daniel在下面的评论中指出的那样,这通常不适用于GWT编译器,只有在使用GWT-rpc.gwt-rpc.gwt-时才适用。

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

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

关于你的最后一个问题:所有的方法都可以声明为返回接口(这就是你想要的,对吧?)然而,上述处罚适用。

顺便说一句:据我所知,这个问题并不局限于方法。它适用于所有类型声明:变量、参数。无论何时使用接口声明某些东西,编译器都会包含完整的子接口和实现类的层次结构。(因此,很明显,如果您声明自己的接口只有一个或两个实现类,那么您不会招致很大的损失。这就是我在GWT中使用接口的方式。)

简而言之:尽可能使用具体的类。

(小建议:如果你在参考视频时给出时间戳,会有所帮助。)

票数 16
EN

Stack Overflow用户

发布于 2013-06-19 12:35:28

在Google IO 2011 - High-performance GWT上展示了这一点和其他性能技巧。

在大约7分钟的时候,演讲者说到了“RPC类型爆炸”:

出于某种原因,我以为GWT编译器会再次优化它,但似乎我错了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6059211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档