QtJniTypes::JObject Class
template <typename Type> class QtJniTypes::JObjectQtJniTypes 命名空间中的JObject模板是已声明的Java类型的基类。更多内容...
| 头文件: | #include <qjniobject.h> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| 自: | Qt 6.8 |
公共函数
| JObject() | |
| JObject(QJniObject &&other) | |
| JObject(const QJniObject &other) | |
| JObject(jobject other) | |
| JObject(const QtJniTypes::JObject<Type> &other) | |
| JObject(QtJniTypes::JObject<Type> &&other) | |
| ~JObject() | |
| auto | callMethod(const char *method, Args &&... args) const |
| QByteArray | className() const |
| auto | getField(const char *field) const |
| bool | isValid() const |
| jclass | objectClass() const |
| auto | setField(const char *field, T &&value) |
| QString | toString() const |
| QtJniTypes::JObject<Type> & | operator=(QtJniTypes::JObject<Type> &&other) |
| QtJniTypes::JObject<Type> & | operator=(const QtJniTypes::JObject<Type> &other) |
静态公共成员
| auto | callStaticMethod(const char *methodName, Args &&... args) |
| QtJniTypes::JObject<Type> | construct(Args &&... args) |
| QtJniTypes::JObject<Type> | fromJObject(jobject object) |
| QtJniTypes::JObject<Type> | fromLocalRef(jobject ref) |
| auto | getStaticField(const char *field) |
| bool | isClassAvailable() |
| bool | registerNativeMethods(std::initializer_list<JNINativeMethod> methods) |
| auto | setStaticField(const char *field, T &&value) |
详细说明
JObject<Type> 是一个模板类,其中Type 指定要表示的 Java 类型。
使用Q_DECLARE_JNI_CLASS 宏时,该模板会进行特化。特化会在QtJniTypes 命名空间中生成一个唯一的类型。这样,当特化类型的实例作为参数传递时,类型系统就能在 JNI 调用中推导出正确的签名。
实例可以与 `QJniObject ` 和 `jobject` 之间进行隐式转换,并提供与 `QJniObject ` 相同的模板 API 来调用方法和访问属性。由于 `JObject` 的实例知道其所包含的 Java 类型,因此用于访问静态方法或字段的 API 无需将类名作为显式参数。
另请参阅 Q_DECLARE_JNI_CLASS 。
成员函数文档
JObject::JObject()
默认构造 JObject 实例。这也会默认构造所表示的 Java 类型的实例。
[noexcept] JObject::JObject(QJniObject &&other)
从other 创建一个JObject实例。
JObject::JObject(const QJniObject &other)
创建一个 JObject 实例,该实例持有与other 相同的 jobject 的引用。
JObject::JObject(jobject other)
创建一个 JObject 实例,该实例保存对other 的引用。
[default] JObject::JObject(const QtJniTypes::JObject<Type> &other)
复制并构造一个JObject 的实例。
[noexcept default] JObject::JObject(QtJniTypes::JObject<Type> &&other)
通过“move”语法构造一个JObject 的实例。
[default] JObject::~JObject()
销毁JObject 的实例。
template <typename Ret = void, typename... Args> auto JObject::callMethod(const char *method, Args &&... args) const
调用实例方法method ,传入参数args ,并返回类型为Ret的结果(除非Ret是void )。如果Ret是jobject类型,则返回值将为QJniObject 。
另请参阅 QJniObject::callMethod()。
[static] template <typename Ret = void, typename... Args> auto JObject::callStaticMethod(const char *methodName, Args &&... args)
调用静态方法methodName ,传入参数args ,并返回类型为Ret的结果(除非Ret是void )。如果Ret是jobject类型,则返回值将为QJniObject 。
另请参阅 QJniObject::callStaticMethod()。
QByteArray JObject::className() const
返回该对象所属的 Java 类的名称。
另请参阅 objectClass() 和QJniObject::className()。
[static] template <typename... Args> QtJniTypes::JObject<Type> JObject::construct(Args &&... args)
根据args 构建一个Java对象,并返回一个JObject 实例,该实例保存了对该Java对象的引用。
[static] QtJniTypes::JObject<Type> JObject::fromJObject(jobject object)
根据object 构建一个JObject 实例,并返回该实例。
[static] QtJniTypes::JObject<Type> JObject::fromLocalRef(jobject ref)
构建一个JObject ,该对象持有对ref 的本地引用,并返回该对象。
template <typename T> auto JObject::getField(const char *field) const
返回实例字段field 的值。
另请参阅 QJniObject::getField()。
[static] template <typename T> auto JObject::getStaticField(const char *field)
返回静态字段 `field` 的值。
另请参阅 QJniObject::getStaticField()。
[static] bool JObject::isClassAvailable()
返回此JObject 特化所代表的类是否可用。
另请参阅 QJniObject::isClassAvailable()。
bool JObject::isValid() const
返回JObject 实例是否持有对jobject的有效引用。
另请参阅 QJniObject::isValid()。
jclass JObject::objectClass() const
返回该JObject 所属的 Java 类,并将其作为 jclass 返回。
另请参阅 className() 和QJniObject::objectClass()。
[static] bool JObject::registerNativeMethods(std::initializer_list<JNINativeMethod> methods)
将 Java 方法注册到methods 中,该方法由JObject 特化类表示,并返回注册是否成功。
另请参阅 QJniEnvironment::registerNativeMethods()。
template <typename Ret = void, typename T> auto JObject::setField(const char *field, T &&value)
将实例字段 `field ` 的值设置为 `value`。
另请参阅 QJniObject::setField()。
[static] template <typename Ret = void, typename T> auto JObject::setStaticField(const char *field, T &&value)
将静态字段field 设置为value 。
另请参阅 QJniObject::setStaticField()。
QString JObject::toString() const
返回一个QString ,其中包含该Java对象的字符串表示形式。
另请参阅 QJniObject::toString()。
[noexcept default] QtJniTypes::JObject<Type> &JObject::operator=(QtJniTypes::JObject<Type> &&other)
将other 通过Move操作赋值给此JObject 实例。
[default] QtJniTypes::JObject<Type> &JObject::operator=(const QtJniTypes::JObject<Type> &other)
将other 复制并赋值给此JObject 实例。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.