在来自Google IO 2009的视频中,演示者很快就会说方法的签名应该返回具体类型而不是接口.
从我在视频中听到的内容来看,这与GWT Java-to-Javascript编译器有关.

Ste*_*fan 16
正如你所说,这与gwt编译器有关.编辑:但是,正如Daniel在下面的评论中指出的那样,这通常不适用于gwt编译器,而只适用于使用GWT-RPC.
如果将List而不是ArrayList声明为返回类型,则gwt-compiler将在编译的代码中包含完整的List-hierarchy(即所有实现List的类型).如果使用ArrayList,编译器只需要包含ArrayList层次结构(即实现ArrayList的所有类型 - 通常只是ArrayList本身).使用接口而不是具体类,您将在编译时间和生成代码的大小(以及每个用户在运行应用程序时必须下载的代码量)方面付出代价.
您还要问原因:如果您使用接口(而不是具体类),编译器在编译时不知道将使用这些接口的哪些实现.因此,它包括所有可能的实现.
关于你的最后一个问题:所有方法都可以声明为返回接口(这就是你的意思,对吧?).但是,上述罚款适用.
顺便说一下:据我所知,这个问题不仅限于方法.它适用于所有类型声明:变量,参数.每当您使用接口声明某些内容时,编译器将包含子接口的完整层次结构和实现类.(很明显,如果你只用一两个实现类声明自己的接口,那么你就不会受到很大的惩罚.这就是我在GWT中使用接口的方式.)
简而言之:尽可能使用具体的课程.
(小建议:如果你在推荐视频时给出时间戳,会有所帮助.)
| 归档时间: |
|
| 查看次数: |
2148 次 |
| 最近记录: |