diff --git a/src/corelib/kernel/qjniobject.h b/src/corelib/kernel/qjniobject.h index 178a4b7faac..ecce99433fb 100644 --- a/src/corelib/kernel/qjniobject.h +++ b/src/corelib/kernel/qjniobject.h @@ -69,12 +69,17 @@ public: #endif > explicit QJniObject(const char *className, Args &&...args) - : QJniObject(Qt::Uninitialized) + : QJniObject(LocalFrame{}, className, std::forward(args)...) { - LocalFrame localFrame; - *this = QJniObject(className, QtJniTypes::constructorSignature().data(), - localFrame.convertToJni(std::forward(args))...); } +private: + template + explicit QJniObject(LocalFrame localFrame, const char *className, Args &&...args) + : QJniObject(className, QtJniTypes::constructorSignature().data(), + localFrame.convertToJni(std::forward(args))...) + { + } +public: explicit QJniObject(jclass clazz); explicit QJniObject(jclass clazz, const char *signature, ...); template