Skip to content

Commit ffa9bf7

Browse files
committed
implement JNIObject.getField()
1 parent 7efb82f commit ffa9bf7

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

Sources/JNI/JNIFields.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ public extension JNI {
2525
try checkAndThrowOnJNIError()
2626
return try T.fromField(fieldID!, on: javaObject)
2727
}
28+
29+
func GetField(_ fieldName: String, fieldJavaClassName: String, from javaObject: JavaObject) throws -> JavaObject {
30+
let env = self._env
31+
let javaClass = try GetObjectClass(obj: javaObject)
32+
let fieldID = env.pointee.pointee.GetFieldID(env, javaClass, fieldName, "L\(fieldJavaClassName);")
33+
try checkAndThrowOnJNIError()
34+
return try JavaObject.fromField(fieldID!, on: javaObject)
35+
}
2836
}
2937

3038

Sources/JNI/JNIObjects.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ open class JNIObject {
8787
return try jni.GetField(fieldName, from: self.instance)
8888
}
8989

90+
public func getField(_ fieldName: String, fieldJavaClassName: String) throws -> JavaObject {
91+
return try jni.GetField(fieldName, fieldJavaClassName: fieldJavaClassName, from: self.instance)
92+
}
93+
9094
public static func callStatic(methodName: String, arguments: [JavaParameterConvertible] = []) throws {
9195
try jni.callStatic(methodName, on: self.javaClass, arguments: arguments)
9296
}

0 commit comments

Comments
 (0)