Programs in j's built-in Lisp can use the following functions to instantiate Java classes and call Java methods:
jclass class-name => class-ref
Returns a reference to the specified Java class.
(jclass "java.lang.String") => #<JAVAOBJECT ... class java.lang.String>
jconstructor class-name &rest parameter-class-names => constructor-ref
Returns a reference to the specified constructor.
(jconstructor "java.lang.StringBuffer") => #<JAVAOBJECT ... public java.lang.StringBuffer()> (jconstructor "java.lang.StringBuffer" "java.lang.String") => #<JAVAOBJECT ... public java.lang.StringBuffer(java.lang.String)>Java primitive types may be used as parameter class names:
(jconstructor "java.lang.StringBuffer" "int") => #<JAVAOBJECT ... public java.lang.StringBuffer(int)>
jmethod class-name method-name &rest parameter-class-names => method-ref
Returns a reference to the specified method.
(jmethod "java.lang.String" "length") => #<JAVAOBJECT ... java.lang.String.length()> (jmethod "java.lang.StringBuffer" "append" "java.lang.String") => #<JAVAOBJECT ... java.lang.StringBuffer.append(java.lang.String)>The parameter class names may be omitted if there is no ambiguity:
(jmethod "java.lang.StringBuffer" "setLength") => #<JAVAOBJECT ... public synchronized void java.lang.StringBuffer.setLength(int)>
jstatic method-ref class-ref &rest args => result
Invokes a static method.
If method-ref is a string, it is assumed to name a method. class-ref must be a class name or a class reference returned by jclass.
(jstatic "currentTimeMillis" "java.lang.System") => 1043330903587
If method-ref is a method reference returned by jmethod, the class-ref argument is ignored.
(jstatic (jmethod "java.lang.System" "currentTimeMillis") nil) => 1043330944932
jnew constructor &rest args => object-ref
Invokes a constructor.
(jnew (jconstructor "java.lang.String" "java.lang.String") "this is a test") => #<JAVAOBJECT [java.lang.String] this is a test>
jcall method-ref instance-ref &rest args => result
Invokes a method on a Java object.
(setq x (jnew (jconstructor "java.lang.String" "java.lang.String") "this is a test")) => #<JAVAOBJECT [java.lang.String] this is a test> (defconstant length-method (jmethod "java.lang.String" "length")) => LENGTH-METHOD (jcall length-method x) => 14