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
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
create_proxy(object: Object, interfaces: PackedStringArray) |
|
create_sam_callback(sam_interface: String, callable: Callable) |
|
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.