gpt4 book ai didi

java - 为什么 GWT 的编辑器框架中的子编辑器需要包私有(private)?

转载 作者:行者123 更新时间:2023-11-29 10:05:24 24 4
gpt4 key购买 nike

我刚试过 GWT's editor framework并让它为一个小例子工作。但是我想知道为什么子编辑需要包私有(private)?

链接页面中的示例中有一条评论专门提到了包保护的字段,但我找不到原因。

// Sub-editors are retrieved from package-protected fields, usually initialized with UiBinder.
// Many Editors have no interesting logic in them
public class PersonEditor extends Dialog implements Editor<Person> {
Label nameEditor;
AddressEditor addressEditor;
...
}

在我自己尝试的例子中,只有当我的子编辑器是包私有(private)的时,我才让它工作,如果我将它们设为私有(private),绑定(bind)将不再有效。

谁能向我解释为什么存在此限制?这让我的编码风格显得有点不一致。谢谢!

最佳答案

与 UiBinder 类似,EditorDriver 的生成器会在生成 Editor 类的同时生成类。这些类需要访问编辑器才能使用它们。

换句话说,编辑器框架不会修改你的类(没有魔法),所以你必须以某种方式公开你的子编辑器:package-private 就足够了,但是 public 当然也可以。
了解发生了什么的最好方法是将 -gen 选项(后跟目录路径)传递给开发模式的 GWT 编译器,以便它将所有生成的类输出到磁盘。不过请注意:编辑器框架真的很难理解!

此外,如果您的编辑器扩展了另一个包含子编辑器(您想要继承)的包中的其他类,则该子编辑器必须在子类的包中可见,因此它必须是 public 在父类中,或由子类显式公开(使用非 private 的访问器方法)。

关于java - 为什么 GWT 的编辑器框架中的子编辑器需要包私有(private)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9724789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com