2012-01-30 69 views
2

我有靜態的Java方法,我添加的JavaScript用這種方法:調用從犀牛靜態Java方法的JavaScript

public void addJavaMethod(Method method) 
{ 
    try 
    { 
      FunctionObject fo = new FunctionObject(method.getName(), method, m_scope); 
      FunctionObject.putProperty(m_scope, method.getName(), fo); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

我總是使用對象類的參數,在這些方法中,因爲它以其他方式有錯誤出現,例如:

,而不是

static void setSomeFloatValueHere(float value){} 

我用:

static void setSomeFloatValueHere(Object value) 
{//convert this object to a float} 

隨着布爾我可以做一個直接的轉換:

static void setBoolean(Object b){someBooleanObject = (Boolean)b;} 

但隨着整型,浮點,長,雙等,我不能這樣做。 我收到一個錯誤:

org.mozilla.javascript.Undefined cannot be cast to java.lang.Integer 

我如何能得到這個與這些類型的工作呢?並可能還有其他非原始類型的對象? 感謝

回答

1

你的對象可能不是一個整數,而是它有一個的intValue()

您可以通過使用value.getClass檢查實際的類型()。的getName()。

+0

謝謝,你說得對不對路的一些東西,比如我發現有的只是雙打,而不是浮動。儘管如此,我仍堅持長期價值。在js中,如果我說:var x = 0; setLong(X);其中setLong需要很長的價值,我檢查了你寫的方式類型和我得到「org.mozilla.javascript.Undefined」。 0不應該是不確定的嗎? 另外,我可以使用NativeJavaObject作爲參數,而不是對象其他更復雜的對象,並用NativeJavaObject.unwrap獲得對象值(); – user1177453 2012-01-30 09:38:03

+0

@ user1177453沒有花車?哪裏? – 2012-10-27 02:51:40