我正在学习GWT,并且已经开始掌握它了。我正处于我的代码变得一团糟的地步,所以我回过头来将其中的合理部分分解为Composites。我遇到的第一个问题是我的工具支持未能为新的Composite类提供一个initWidget()方法。它确实包含一个默认构造函数。暂时,我只是使用对initWidget()
的调用来填充覆盖的super(initWidget(w))
方法。我的项目可以按预期进行编译和运行,尽管我感觉好像必须丢失一些东西。
重写init时应牢记,如果需要在构造函数中放置任何内容,该怎么办。在此之后,我还有其他需要知道的内容吗?还是可以归结为常规的旧Java?
澄清-在我看来,对于这个问题,可能有不同的答案,这取决于您打算将所说的Composite
类作为库的一部分发布,还是作为独立应用程序的一部分发布。目前,我尤其无意开发对外部有用的组件(主要是因为我对这项特定技术非常了解。)
谢谢!
我不确定我是否了解您要做什么。但是对于我编写的所有Composite,我从未覆盖过initWidget方法。因为Composite本身不需要使用构造函数进行初始化,即无需调用super(),扩展了Composite的窗口小部件的构造函数看起来像:
public mywidget() {
SomePanel p = new SomePanel();
....
initWidget(p);
}
作为一项最佳实践,imo,只有扩展Composite的窗口小部件应将其称为“自己的” initWidget。
“ GWT Conference: Best Practices for Building Libraries”给出了几点提示。您还应该查看GWT的源代码以及其中一个GWT库的源代码(例如gwt-ext)
[编辑]我刚刚看到了另一个选项:suco。从描述中:
一个微型库,有助于维护您的GWT客户端代码的干净和模块化。