Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
JavaClassWrapper
Успадковує: Object
Забезпечує доступ до Java рідного інтерфейсу.
Опис
Синглтон JavaClassWrapper надає програмі Godot спосіб надсилати й отримувати дані через власний інтерфейс Java (JNI).
Примітка. Цей синглтон доступний лише в збірках Android.
var LocalDateTime = JavaClassWrapper.wrap("java.time.LocalDateTime")
var DateTimeFormatter = JavaClassWrapper.wrap("java.time.format.DateTimeFormatter")
var datetime = LocalDateTime.now()
var formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss")
print(datetime.format(formatter))
Попередження: Викликаючи методи Java, обов’язково перевірте get_exception(), щоб перевірити, чи метод викликав виняток.
Посібники
Методи
create_proxy(object: Object, interfaces: PackedStringArray) |
|
create_sam_callback(sam_interface: String, callable: Callable) |
|
wrap(name: String) |
Описи методів
JavaObject create_proxy(object: Object, interfaces: PackedStringArray) 🔗
Creates a JavaObject implementing the given Java interfaces using the given Object as the implementation.
The object must contain methods signatures matching the methods signatures from the passed Java interfaces. Invoking methods from the Java interfaces will route to the matching object method.
class PrintProxy:
func println(content: String) -> void:
print(content)
var print_proxy = PrintProxy.new()
var printer_object = JavaClassWrapper.create_proxy(print_proxy, ["android.util.Printer"])
printer_object.println("Hello Godot World!")
Note: This method only works on Android. On every other platform, this method will always return null.
JavaObject create_sam_callback(sam_interface: String, callable: Callable) 🔗
Creates a JavaObject implementing the Java Single Abstract Method (SAM) interface using the Godot Callable as the implementation.
The sam_interface must be a Java SAM interface, meaning it must only have a single abstract method to implement.
The callable must be able to handle the same parameter types as the SAM interface method, and must provide the same return type. The callable will be invoked as a callback, passing the arguments from the Java SAM interface method.
var cb = func (content: String) -> void:
print(content)
var callback = JavaClassWrapper.create_sam_callback("android.util.Printer", cb)
callback.println("Hello Godot World!")
Note: This method only works on Android. On every other platform, this method will always return null.
JavaObject get_exception() 🔗
Повертає виняток Java з останнього виклику в клас Java. Якщо не було винятку, він поверне null.
Примітка. Цей спосіб працює лише на Android. На будь-якій іншій платформі цей метод завжди повертатиме null.
JavaClass wrap(name: String) 🔗
Огортає клас, визначений у Java, та повертає його як тип JavaClass Object, з яким може взаємодіяти Godot.
Під час обгортання внутрішніх (вкладених) класів використовуйте $ замість . для їх розділення. Наприклад, JavaClassWrapper.wrap("android.view.WindowManager$LayoutParams") обгортає клас WindowManager.LayoutParams.
Примітка: Щоб викликати конструктор, викличте метод з тим самим ім'ям, що й клас. Наприклад:
var Intent = JavaClassWrapper.wrap("android.content.Intent")
var intent = Intent.Intent()
Примітка: Цей метод працює лише на Android. На всіх інших платформах цей метод нічого не робить і повертає порожній JavaClass.