Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gwt 如何在JavascriptObject中设置双类型字段的默认值?_Gwt - Fatal编程技术网

Gwt 如何在JavascriptObject中设置双类型字段的默认值?

Gwt 如何在JavascriptObject中设置双类型字段的默认值?,gwt,Gwt,我有一个JavaScriptObject,如下所示: @SingleJsoImpl(Test1Impl.class) public interface Test1 { double getValue(); void setValue(String Value); } public class Test1Impl extends JavaScriptObject implements Test1 { protected Test1Impl() {

我有一个JavaScriptObject,如下所示:

@SingleJsoImpl(Test1Impl.class)
public interface Test1 
{
     double getValue();

     void setValue(String Value);
}

public class Test1Impl extends JavaScriptObject implements Test1
{
    protected Test1Impl()
    {
    }

         @Override
     public final native double getValue()/*-{
      return this.Value||(this.Value=0);
     }-*/;


     @Override
     public final native void setValue(String Value)/*-{
     this.Value = Value;
    }-*/;
}
我想用这个:

return this.Value||(this.Value=0);
设置默认值,但当我测试它时

public class GWT_Test implements EntryPoint{

    public static native void log(Object message)/*-{
           console.log(message);
    }-*/;


    @Override
    public void onModuleLoad()
    {
    Test1 t1=(Test1) Test1Impl.createObject();

    log(t1.getValue());
    }
}
我有这些错误:

com.google.gwt.core.client.JavaScriptException: (null)             @com.gwt.test.client.GWT_Test::log(Ljava/lang/Object;)([Java object: java.lang.Double@239824989]): null
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:249)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeVoid(ModuleSpace.java:304)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeVoid(JavaScriptHost.java:107)
at com.dsc.gwt.test.client.GWT_Test.log(GWT_Test.java)
at com.dsc.gwt.test.client.GWT_Test.onModuleLoad(GWT_Test.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.gwt.dev.shell.ModuleSpace.onLoad(ModuleSpace.java:411)
at com.google.gwt.dev.shell.OophmSessionHandler.loadModule(OophmSessionHandler.java:200)
at     com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:526)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
at java.lang.Thread.run(Thread.java:744)
那么这里的问题是什么?或

 How to set default value for double type field?
更新

@Override
public void onModuleLoad()
{
    Test1 t1=(Test1) Test1Impl.createObject();

    printDouble(t1.getValue());
}

private void printDouble(Double num){
    log(num.toString());
}
还有这个

    @Override
public void onModuleLoad()
{
    Test1 t1=(Test1) Test1Impl.createObject();

    log(Double.toString(t1.getValue()));
}
按照我的预期工作,有人能解释第一行错误消息吗

com.google.gwt.core.client.JavaScriptException: (null)@com.gwt.test.client.GWT_Test::log(Ljava/lang/Object;)([Java object: java.lang.Double@239824989]): null

您看到的错误是JS相当于一个
NullPointerException


GWT在iframe中运行,iframe并不总是有
控制台
对象,这取决于浏览器。使用
$wnd.console
引用顶部窗口的控制台,您的Widget et al.live就在那里。

在我看来,问题在于
log()
方法(尝试
$wnd.console
而不仅仅是
console
,或者只使用
GWT.log()
window.alert()
进行测试)您好,我已经更新了问题。