#pragma once #include "JniContext.h" #include class JBindings { protected: JBindings(const char* className) { JNIEnv* env = JniContext::getJniEnv(); _class = findClass(env, className); } std::optional getStaticFieldID(const char* name, const char* signature) { try{ auto result = JniContext::getJniEnv()->GetStaticFieldID(_class, name, signature); JniContext::checkException(); return result; }catch(...){ return std::nullopt; } } // static jclass findClass(JNIEnv* env, const char* className) { auto classLocalRef = env->FindClass(className); if(classLocalRef == nullptr){ return nullptr; } auto globalRef = (jclass)env->NewGlobalRef(classLocalRef); env->DeleteLocalRef(classLocalRef); return globalRef; } jclass _class; };