WEB开发网
开发学院软件开发Java 使用 Google Web Toolkit 和 Eclipse Galileo 进行... 阅读

使用 Google Web Toolkit 和 Eclipse Galileo 进行高性能 Web 开发

 2009-12-13 00:00:00 来源:WEB开发网   
核心提示: 在清单 13 中,我们引入了一个新的抽象:一个 helper 函数,使用 Google Web Toolkit 和 Eclipse Galileo 进行高性能 Web 开发(8),该函数接收一个 Thing 对象的集合,连接对每个 Thing 对象调用 getName() 方法的结果,因为只有这

在清单 13 中,我们引入了一个新的抽象:一个 helper 函数。该函数接收一个 Thing 对象的集合,连接对每个 Thing 对象调用 getName() 方法的结果。分隔符也抽象为这个函数的一个参数。现在,让我们看看清单 14 中显示的编译后的 JavaScript。


清单 14. 编译后的 mkString 代码
function $mkString(things, separator){ 
 var sb, thing, thing$iterator; 
 sb = $StringBuilder(new StringBuilder()); 
 for (thing$iterator = $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), 
things); thing$iterator.i < thing$iterator.this$0.size_0();) { 
  thing = dynamicCast($next_1(thing$iterator), 16); 
  $append_2(sb, thing.getName()); 
  sb.impl.string += String.fromCharCode(separator); 
 } 
 return $deleteCharAt(sb, sb.impl.string.length).impl.string; 
} 
// client code 
user = $Person(new Person(), 'GWT', 'User'); 
userCompany = $Company(new Company(), 'ACME'); 
$setText_1(nameField, $mkString($Arrays$ArrayList(new Arrays$ArrayList(), 
initValues(_3Lorg_developerworks_gwt_client_Thing_2_classLit, 0, 16, 
 [user, userCompany])), 32)); 

清单 14 中的代码的复杂程度与 Java 源代码类似。注意,循环内部调用了一个名为 dynamicCast 的函数。这个 JavaScript 用于检查传递过来的对象是否可以转换为指定类型的对象。在本例中,它将检查这个对象是 Person 还是 Company,因为只有这两个对象实现 Thing。通过引入针对该接口编写的代码并拥有多个接口实现,GWT 编译器可以实施的优化将变得很少。

上一页  3 4 5 6 7 8 9 10  下一页

Tags:使用 Google Web

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接