clojure
Interoperabilidad de Java
Buscar..
Sintaxis
-
.
te permite acceder a métodos de instancia -
.-
permite acceder a campos de instancia -
..
macro expandiéndose a múltiples invocaciones anidadas de.
Observaciones
Como lenguaje alojado, Clojure proporciona un excelente soporte de interoperabilidad con Java. El código Clojure también se puede llamar directamente desde Java.
Llamando a un método de instancia en un objeto Java
Puede llamar a un método de instancia utilizando el .
forma especial:
(.trim " hello ")
;;=> "hello"
Puedes llamar a métodos de instancia con argumentos como este:
(.substring "hello" 0 2)
;;=> "he"
Hacer referencia a un campo de instancia en un objeto Java
Puede llamar a un campo de instancia utilizando la .-
sintaxis:
(def p (java.awt.Point. 0 1))
(.-x p)
;;=> 0
(.-y p)
;;=> 1
Creando un nuevo objeto Java
Puede crear una instancia de objetos de una de estas dos maneras:
(java.awt.Point. 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]
O
(new java.awt.Point 0 1)
;;=> => #object[java.awt.Point 0x3776d535 "java.awt.Point[x=0,y=1]"]
Llamando a un método estático
Puedes llamar métodos estáticos como este:
(System/currentTimeMillis)
;;=> 1469493415265
O pasar en argumentos, como este:
(System/setProperty "foo" "42")
;;=> nil
(System/getProperty "foo")
;;=> "42"
Llamando a una función de Clojure desde Java
Puede llamar a una función Clojure desde el código Java buscando la función e invocándola:
IFn times = Clojure.var("clojure.core", "*");
times.invoke(2, 2);
Esto busca la función *
desde el espacio de nombres clojure.core
y la invoca con los argumentos 2 y 2.
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow