本文整理汇总了C++中JEnv::IsInstanceOf方法的典型用法代码示例。如果您正苦于以下问题:C++ JEnv::IsInstanceOf方法的具体用法?C++ JEnv::IsInstanceOf怎么用?C++ JEnv::IsInstanceOf使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JEnv
的用法示例。
在下文中一共展示了JEnv::IsInstanceOf方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CallJavaMethod
//.........这里部分代码省略.........
else
{
result = env.CallDoubleMethodA(callerJavaObject, mid, javaArgs);
}
args.GetReturnValue().Set(result);
break;
}
case MethodReturnType::String:
{
jobject result = nullptr;
bool exceptionOccurred;
if (isStatic)
{
result = env.CallStaticObjectMethodA(clazz, mid, javaArgs);
}
else if (isSuper)
{
result = env.CallNonvirtualObjectMethodA(callerJavaObject, clazz, mid, javaArgs);
}
else
{
result = env.CallObjectMethodA(callerJavaObject, mid, javaArgs);
}
if (result != nullptr)
{
auto objectResult = ArgConverter::jstringToV8String(static_cast<jstring>(result));
args.GetReturnValue().Set(objectResult);
env.DeleteLocalRef(result);
}
else
{
args.GetReturnValue().Set(Null(isolate));
}
break;
}
case MethodReturnType::Object:
{
jobject result = nullptr;
bool exceptionOccurred;
if (isStatic)
{
result = env.CallStaticObjectMethodA(clazz, mid, javaArgs);
}
else if (isSuper)
{
result = env.CallNonvirtualObjectMethodA(callerJavaObject, clazz, mid, javaArgs);
}
else
{
result = env.CallObjectMethodA(callerJavaObject, mid, javaArgs);
}
if (result != nullptr)
{
auto isString = env.IsInstanceOf(result, JAVA_LANG_STRING);
Local<Value> objectResult;
if (isString)
{
objectResult = ArgConverter::jstringToV8String((jstring)result);
}
else
{
jint javaObjectID = objectManager->GetOrCreateObjectId(result);
objectResult = objectManager->GetJsObjectByJavaObject(javaObjectID);
if (objectResult.IsEmpty())
{
objectResult = objectManager->CreateJSWrapper(javaObjectID, *returnType, result);
}
}
args.GetReturnValue().Set(objectResult);
env.DeleteLocalRef(result);
}
else
{
args.GetReturnValue().Set(Null(isolate));
}
break;
}
default:
{
assert(false);
break;
}
}
static uint32_t adjustMemCount = 0;
if ((++adjustMemCount % 2) == 0)
{
AdjustAmountOfExternalAllocatedMemory(env, isolate);
}
}
示例2: CallJavaMethod
//.........这里部分代码省略.........
}
case '[':
case 'L':
{
bool isString = returnType == "Ljava/lang/String;";
jobject result = nullptr;
bool exceptionOccurred;
if (isString)
{
if (isStatic)
{
result = env.CallStaticObjectMethodA(clazz, mid, javaArgs);
}
else if (isSuper)
{
result = env.CallNonvirtualObjectMethodA(callerJavaObject, clazz, mid, javaArgs);
}
else
{
result = env.CallObjectMethodA(callerJavaObject, mid, javaArgs);
}
exceptionOccurred = env.ExceptionCheck() == JNI_TRUE;
if (!exceptionOccurred)
{
auto resultV8String = ArgConverter::jstringToV8String((jstring) result);
args.GetReturnValue().Set(resultV8String);
}
}
else
{
if (isStatic)
{
result = env.CallStaticObjectMethodA(clazz, mid, javaArgs);
}
else if (isSuper)
{
result = env.CallNonvirtualObjectMethodA(callerJavaObject, clazz, mid, javaArgs);
}
else
{
result = env.CallObjectMethodA(callerJavaObject, mid, javaArgs);
}
exceptionOccurred = env.ExceptionCheck() == JNI_TRUE;
if (!exceptionOccurred)
{
if (result != nullptr)
{
isString = env.IsInstanceOf(result, JAVA_LANG_STRING);
Handle<Value> objectResult;
if (isString)
{
objectResult = ArgConverter::jstringToV8String((jstring)result);
}
else
{
jint javaObjectID = objectManager->GetOrCreateObjectId(result);
objectResult = objectManager->GetJsObjectByJavaObject(javaObjectID);
if (objectResult.IsEmpty())
{
objectResult = objectManager->CreateJSWrapper(javaObjectID, returnType, result);
}
}
args.GetReturnValue().Set(objectResult);
}
else
{
args.GetReturnValue().Set(Null(isolate));
}
}
}
if (!exceptionOccurred)
{
env.DeleteLocalRef(result);
}
break;
}
default:
{
// TODO:
ASSERT_FAIL("Unknown return type");
break;
}
}
if (!ExceptionUtil::GetInstance()->CheckForJavaException(env))
{
AdjustAmountOfExternalAllocatedMemory(env, isolate);
}
}