у меня есть статические методы 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
Как я могу получить эту работу с этими типами, а? и, возможно, другие объекты не примитивного типа? Благодаря
Спасибо, вы правы насчет неправильных типов для некоторых вещей, например, я обнаружил, что есть только парные, а не плавает. Тем не менее, я придерживаюсь длинных ценностей. В js, если я положил: var x = 0; setLong (х); где setLong принимает длинное значение, я проверил тип так, как вы написали, и я получаю «org.mozilla.javascript.Undefined». 0 Не должно быть неопределенным, если это так? Кроме того, я могу использовать NativeJavaObject в качестве параметра вместо объекта для других более сложных объектов и получить значение объекта с помощью NativeJavaObject.unwrap(); – user1177453
@ пользователь1177453 нет плавает? Где? –