gpt4 book ai didi

java - GWT 延迟绑定(bind)在编译后不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 13:59:58 26 4
gpt4 key购买 nike

我正在尝试使用生成器实现延迟绑定(bind)。当我在开发模式下测试延迟绑定(bind)时,它按预期工作,当我切换到生产模式时,延迟绑定(bind)由于某种原因不起作用。我有以下类(class)

public class GeneratorTest implements EntryPoint {

//should be modified by generator
public static class GeneratorTestPrefs extends PreferencesImpl {
...
}
...
}

public class PreferencesImpl implements Preferences {
...
}

public interface Preferences {

public void load(String key, Storage storage);

public void store(String key, Storage storage);
}

以及 gwt module.xml 中的以下定义

<generate-with class="com.xxx.xxx.gwt.generator.server.PreferencesGenerator">
<when-type-assignable class="com.xxx.xxx.gwt.generator.client.Preferences"/>
</generate-with>

我为创建的类添加了日志

GeneratorTestPrefs prefs = GWT.create(GeneratorTestPrefs.class) 

在开发模式下,在日志文件中,我看到 GWT 正在使用由生成器创建的类 (GeneratorTestPrefs_PreferencesAdapter)

[java] INFO: deferred binding: com.xxx.xxx.gwt.generator.client.GeneratorTestPrefs_PreferencesAdapter

在生产模式下,在日志文件中,我看到 GWT 未使用由生成器创建的类 (GeneratorTest$GeneratorTestPrefs)

Wed Apr 01 15:48:06 GMT+300 2015 com.xxx.xxx.gwt.generator.client.GeneratorTest INFO: deferred binding: com.xxx.xxx.gwt.generator.client.GeneratorTest$GeneratorTestPrefs

我不知道出了什么问题。我错过了什么吗?我做错了什么吗?

提前谢谢您!

最佳答案

生成器中的实现无效。当类已经生成时它返回 null,因此仅在某些排列中使用正确的版本

public String generate(TreeLogger logger, .....) ...{
String className = null;
if (printWriter != null) {
SourceWriter writer = composer.createSourceWriter(ctx, printWriter);
....
className = composer.getCreatedClassName();
}
return className;
}

当我改变

    String className = packageName + "." + simpleName;

它开始按预期工作。

关于java - GWT 延迟绑定(bind)在编译后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29391430/

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