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

Eredita: Object

Fornisce l'accesso alla Java Native Interface.

Descrizione

Il singleton JavaClassWrapper fornisce un modo all'applicazione Godot di inviare e ricevere dati tramite la Java Native Interface (JNI).

Nota: Questo singleton è disponibile solo nelle build 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))

Attenzione: Quando si chiamano metodi Java, assicurarsi di controllare get_exception() per verificare se il metodo ha generato un'eccezione.

Tutorial

Metodi

JavaObject

create_proxy(object: Object, interfaces: PackedStringArray)

JavaObject

create_sam_callback(sam_interface: String, callable: Callable)

JavaObject

get_exception()

JavaClass

wrap(name: String)


Descrizioni dei metodi

JavaObject create_proxy(object: Object, interfaces: PackedStringArray) 🔗

Crea un JavaObject che implementa le interfacce Java specificate, utilizzando l'Object fornito come implementazione.

object deve contenere firme di metodi corrispondenti alle firme dei metodi delle interfaces Java passate. L'invocazione dei metodi dalle interfaces Java indirizzerà al metodo corrispondente dell'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!")

Nota: Questo metodo funziona solo su Android. Su tutte le altre piattaforme, questo metodo restituirà sempre null.


JavaObject create_sam_callback(sam_interface: String, callable: Callable) 🔗

Crea un JavaObject che implementa l'interfaccia Java Single Abstract Method (SAM) utilizzando il Callable di Godot come implementazione.

sam_interface deve essere un'interfaccia Java SAM, ovvero deve avere un solo metodo astratto da implementare.

callable deve essere in grado di gestire gli stessi tipi di parametri del metodo dell'interfaccia SAM e deve fornire lo stesso tipo di ritorno. callable verrà invocato come callback, passando gli argomenti dal metodo dell'interfaccia 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!")

Nota: Questo metodo funziona solo su Android. Su tutte le altre piattaforme, questo metodo restituirà sempre null.


JavaObject get_exception() 🔗

Restituisce l'eccezione Java dall'ultima chiamata in una classe Java. Se non c'è stata alcuna eccezione, restituirà null.

Nota: Questo metodo funziona solo su Android. Su tutte le altre piattaforme, questo metodo restituirà sempre null.


JavaClass wrap(name: String) 🔗

Effettua un wrapping su una classe definita in Java e la restituisce come un tipo JavaClass Object con cui Godot può interagire.

Quando si effettua un wrapping sulle classi interne (annidate), utilizzare $ anziché . per separarle. Ad esempio, JavaClassWrapper.wrap("android.view.WindowManager$LayoutParams") effettua un wrapping sulla classe WindowManager.LayoutParams.

Nota: Per richiamare un costruttore, chiama un metodo con lo stesso nome della classe. Ad esempio:

var Intent = JavaClassWrapper.wrap("android.content.Intent")
var intent = Intent.Intent()

Nota: Questo metodo funziona solo su Android. Su tutte le altre piattaforme, questo metodo non fa nulla e restituisce un JavaClass vuoto.