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.

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(), щоб перевірити, чи метод викликав виняток.

Посібники

Методи

JavaObject

create_proxy(object: Object, interfaces: PackedStringArray)

JavaObject

create_sam_callback(sam_interface: String, callable: Callable)

JavaObject

get_exception()

JavaClass

wrap(name: String)


Описи методів

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.