我正在查看GWT应用程序的代码。并陷入下面的代码中。
private static TestEditorUiBind uiBinder = GWT.create(TestEditorUiBind.class);
interface TestEditorUiBind extends UiBinder<Widget,TestEditorViewImpl> {}
这是我课程的前两行。然后,我们使用uiBinder.createAndBindUi(this);
我知道GWT.create
将在运行时创建TestEditorUiBind
的实例。
但是我不明白为什么我们在第二行声明了TestEditorUiBind
接口并在GWT.create
的第一行使用了接口? (我检查了TestEditorUiBind
在应用程序的其他任何地方都没有声明)
如果我理解不对,请纠正我。
答案 0 :(得分:0)
由于Java语言的工作方式,行的顺序无关紧要-在之内声明的新类型(枚举,接口,类)实际上变成了它自己的类型,而不是需要等待在该所有者类型内声明。看起来这两行代码都存在于TestEditorViewImpl.java
中-假设是这样,java编译器实际上将创建两个已编译的字节码文件:
TestEditorViewImpl.class
TestEditorViewImpl$TestEditorUiBind.class
然后第一行只是询问TestEditorViewImpl$TestEditorUiBind
的实例,无论该实例是在哪里被声明的。
是的,此静态字段可能是项目中唯一使用该类型的位置,因为它专用于将.ui.xml
绑定到此类。可以使用单例,因为此绑定器将没有状态,但只会根据在TestEditorViewImpl
文件中找到的内容填充.ui.xml
中的字段。