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 Native Interface (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.