此问题基于我收到的另一个问题的答案:https://stackoverflow.com/a/3060233/323357
我的理解是使用接口在我的服务中声明返回类型和参数类型会强制编译器生成多个编译单元,这会增加我的编译时间和生成文件的大小。
我不认为是这种情况,但最新版本的gwt编译器(2.4 - 2.5)是否有办法检测不必要的编译单元......
用于局部变量和参数?
void someFunction()
{
ArrayList<String> list = new ArrayList<String>();
privateFunction(list); //only use of the private function
}
private void privateFunction(List<String> list)
{
Set<Integer> set = new HashSet<Integer>();
//do stuff without reallocating list or set
}
最终成员?
private final Interface member = new InterfaceImpl();
@override
Interface getInterface()
{
return this.member;
}
返回类型?
List<String> myFunction()
{
List<String> ret = new ArrayList<String>();
//do stuff and fill the list
return ret;
}
在服务中?
//Service Interface
List<String> myService();
//Service implementation
List<String> myService()
{
List<String> ret = new ArrayList<String>();
//do stuff and fill the list
return ret;
}
答案 0 :(得分:1)
不要担心4个示例中的前3个。在客户端使用接口(或具有许多子类的类)是没有代价的:通过分析哪些类实例化,可以轻松检测到不必要的类。如有疑问,请检查compile report。
但是,对于服务器端调用,GWT-RPC中不可能:客户端无法知道服务器将创建哪些实例。考虑一下
可以消除此代码大小开销的唯一方法是