diff options
Diffstat (limited to 'platform/android/src/java/util.hpp')
-rw-r--r-- | platform/android/src/java/util.hpp | 39 |
1 files changed, 13 insertions, 26 deletions
diff --git a/platform/android/src/java/util.hpp b/platform/android/src/java/util.hpp index c6b07acac5..808f14be15 100644 --- a/platform/android/src/java/util.hpp +++ b/platform/android/src/java/util.hpp @@ -11,51 +11,43 @@ namespace util { class List : private mbgl::util::noncopyable { public: - static constexpr auto Name() { return "java/util/List"; }; template<class T> static jni::Array<jni::Object<T>> toArray(jni::JNIEnv& env, jni::Object<List> list) { - static auto toArray = List::javaClass.GetMethod<jni::Array<jni::Object<>> ()>(env, "toArray"); + static auto javaClass = jni::Class<List>::Singleton(env); + static auto toArray = javaClass.GetMethod<jni::Array<jni::Object<>> ()>(env, "toArray"); return (jni::Array<jni::Object<T>>) list.Call(env, toArray); }; - - static jni::Class<List> javaClass; - }; class Arrays : private mbgl::util::noncopyable { public: - static constexpr auto Name() { return "java/util/Arrays"; }; template <class T> static jni::Object<List> asList(jni::JNIEnv& env, jni::Array<jni::Object<T>> array) { - static auto asList = Arrays::javaClass.GetStaticMethod<jni::Object<List>(jni::Array<jni::Object<>>)>(env, "asList"); + static auto javaClass = jni::Class<Arrays>::Singleton(env); + static auto asList = javaClass.GetStaticMethod<jni::Object<List>(jni::Array<jni::Object<>>)>(env, "asList"); return javaClass.Call(env, asList, (jni::Array<jni::Object<>>) array); } - - static jni::Class<Arrays> javaClass; - }; class Set : private mbgl::util::noncopyable { public: - static constexpr auto Name() { return "java/util/Set"; }; template<class T> static jni::Array<jni::Object<T>> toArray(jni::JNIEnv& env, jni::Object<Set> list) { - static auto toArray = Set::javaClass.GetMethod<jni::Array<jni::Object<>> ()>(env, "toArray"); + static auto javaClass = jni::Class<Set>::Singleton(env); + static auto toArray = javaClass.GetMethod<jni::Array<jni::Object<>> ()>(env, "toArray"); return (jni::Array<jni::Object<T>>) list.Call(env, toArray); }; - - static jni::Class<Set> javaClass; - }; class Map : private mbgl::util::noncopyable { public: + static constexpr auto Name() { return "java/util/Map"; }; class Entry : private mbgl::util::noncopyable { public: @@ -63,27 +55,22 @@ public: template <class T> static jni::Object<T> getKey(jni::JNIEnv& env, jni::Object<Entry> entry) { - static auto method = Entry::javaClass.GetMethod<jni::Object<> ()>(env, "getKey"); - return (jni::Object<T>) entry.Call(env, method); + static auto javaClass = jni::Class<Map::Entry>::Singleton(env); + static auto method = javaClass.GetMethod<jni::Object<> ()>(env, "getKey"); + return jni::Cast(env, jni::Class<T>::Singleton(env), entry.Call(env, method)); } template <class T> static jni::Object<T> getValue(jni::JNIEnv& env, jni::Object<Entry> entry) { - static auto method = Entry::javaClass.GetMethod<jni::Object<> ()>(env, "getValue"); - return (jni::Object<T>) entry.Call(env, method).Get(); + static auto javaClass = jni::Class<Map::Entry>::Singleton(env); + static auto method = javaClass.GetMethod<jni::Object<> ()>(env, "getValue"); + return jni::Cast(env, jni::Class<T>::Singleton(env), entry.Call(env, method)); } - - static jni::Class<Entry> javaClass; }; - - static constexpr auto Name() { return "java/util/Map"; }; - - static jni::Class<Map> javaClass; }; void registerNative(jni::JNIEnv&); - } // namespace util } // namespace java } // namespace android |