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) |
|
Описи методів
JavaObject create_proxy(object: Object, interfaces: PackedStringArray) 🔗
Створює JavaObject, що реалізує вказані інтерфейси Java, використовуючи вказаний Object як реалізацію.
object повинен містити сигнатури методів, що відповідають сигнатурам методів з переданих Java interfaces. Виклик методів з Java interfaces буде перенаправлений до відповідного методу object.
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!")
Примітка: Цей метод працює лише на Android. На всіх інших платформах цей метод завжди повертатиме null.
JavaObject create_sam_callback(sam_interface: String, callable: Callable) 🔗
Створює JavaObject, що реалізує інтерфейс Java Single Abstract Method (SAM), використовуючи Godot Callable як реалізацію.
sam_interface повинен бути інтерфейсом Java SAM, тобто він повинен містити лише один абстрактний метод для реалізації.
callable повинен підтримувати ті ж типи параметрів, що й метод інтерфейсу SAM, та забезпечувати той самий тип повернення. callable буде викликано як зворотний виклик, передаючи аргументи з методу інтерфейсу Java SAM.
var cb = func (content: String) -> void:
print(content)
var callback = JavaClassWrapper.create_sam_callback("android.util.Printer", cb)
callback.println("Hello Godot World!")
Примітка: Цей метод працює лише на Android. На всіх інших платформах цей метод завжди повертатиме 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.