从rhino javascript调用静态Java方法



我有静态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;}

但是对于int、float、long、double等,我无法做到这一点。我收到一个错误:

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

我如何才能让它也适用于这些类型?以及可能的其他非基元类型的对象?感谢

您的对象可能不是Integer,而是Number,它具有intValue()

您可以使用value.getClass().getName().

检查实际类型

最新更新