1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> |
---|
2 | <html> |
---|
3 | <head> |
---|
4 | <title>J User's Guide - Calling Java From Lisp</title> |
---|
5 | <LINK REL="stylesheet" HREF="j.css" TYPE="text/css"> |
---|
6 | </head> |
---|
7 | <body> |
---|
8 | <a href="contents.html">Top</a> |
---|
9 | <hr> |
---|
10 | <h1>Calling Java From Lisp</h1> |
---|
11 | <hr> |
---|
12 | <p> |
---|
13 | Programs in j's built-in Lisp can use the following functions to instantiate |
---|
14 | Java classes and call Java methods: |
---|
15 | <p> |
---|
16 | <a name="jclass">• jclass</a><dl><dd> |
---|
17 | <p> |
---|
18 | jclass <i>class-name</i> => <i>class-ref</i> |
---|
19 | <p> |
---|
20 | Returns a reference to the specified Java class. |
---|
21 | <pre> |
---|
22 | (jclass "java.lang.String") => |
---|
23 | #<JAVAOBJECT ... class java.lang.String></pre> |
---|
24 | </dl> |
---|
25 | <a name="jconstructor">• jconstructor</a><dl><dd> |
---|
26 | <p> |
---|
27 | jconstructor <i>class-name &rest parameter-class-names</i> => <i>constructor-ref</i> |
---|
28 | <p> |
---|
29 | Returns a reference to the specified constructor. |
---|
30 | <pre> |
---|
31 | (jconstructor "java.lang.StringBuffer") => |
---|
32 | #<JAVAOBJECT ... public java.lang.StringBuffer()> |
---|
33 | |
---|
34 | (jconstructor "java.lang.StringBuffer" "java.lang.String") => |
---|
35 | #<JAVAOBJECT ... public java.lang.StringBuffer(java.lang.String)></pre> |
---|
36 | Java primitive types may be used as parameter class names: |
---|
37 | <pre> |
---|
38 | (jconstructor "java.lang.StringBuffer" "int") => |
---|
39 | #<JAVAOBJECT ... public java.lang.StringBuffer(int)></pre> |
---|
40 | </dl> |
---|
41 | <a name="jmethod">• jmethod</a><dl><dd> |
---|
42 | <p> |
---|
43 | jmethod <i>class-name method-name &rest parameter-class-names</i> => <i>method-ref</i> |
---|
44 | <p> |
---|
45 | Returns a reference to the specified method. |
---|
46 | <pre> |
---|
47 | (jmethod "java.lang.String" "length") => |
---|
48 | #<JAVAOBJECT ... java.lang.String.length()> |
---|
49 | |
---|
50 | (jmethod "java.lang.StringBuffer" "append" "java.lang.String") => |
---|
51 | #<JAVAOBJECT ... java.lang.StringBuffer.append(java.lang.String)></pre> |
---|
52 | The parameter class names may be omitted if there is no ambiguity: |
---|
53 | <pre> |
---|
54 | (jmethod "java.lang.StringBuffer" "setLength") => |
---|
55 | #<JAVAOBJECT ... public synchronized void java.lang.StringBuffer.setLength(int)></pre> |
---|
56 | </dl> |
---|
57 | <a name="jstatic">• jstatic</a><dl><dd> |
---|
58 | <p> |
---|
59 | jstatic <i>method-ref class-ref &rest args</i> => <i>result</i> |
---|
60 | <p> |
---|
61 | Invokes a static method. |
---|
62 | <p> |
---|
63 | If <i>method-ref</i> is a string, it is assumed to name a method. <i>class-ref</i> |
---|
64 | must be a class name or a class reference returned by <a href="#jclass">jclass</a>. |
---|
65 | <pre> |
---|
66 | (jstatic "currentTimeMillis" "java.lang.System") => |
---|
67 | 1043330903587</pre> |
---|
68 | <p> |
---|
69 | If <i>method-ref</i> is a method reference returned by <a href="#jmethod">jmethod</a>, |
---|
70 | the <i>class-ref</i> argument is ignored. |
---|
71 | <pre> |
---|
72 | (jstatic (jmethod "java.lang.System" "currentTimeMillis") nil) => |
---|
73 | 1043330944932</pre> |
---|
74 | </dl> |
---|
75 | <a name="jnew">• jnew</a><dl><dd> |
---|
76 | <p> |
---|
77 | jnew <i>constructor &rest args</i> => <i>object-ref</i> |
---|
78 | <p> |
---|
79 | Invokes a constructor. |
---|
80 | <pre> |
---|
81 | (jnew (jconstructor "java.lang.String" "java.lang.String") "this is a test") => |
---|
82 | #<JAVAOBJECT [java.lang.String] this is a test></pre> |
---|
83 | </dl> |
---|
84 | <a name="jcall">• jcall</a><dl><dd> |
---|
85 | <p> |
---|
86 | jcall <i>method-ref instance-ref &rest args</i> => <i>result</i> |
---|
87 | <p> |
---|
88 | Invokes a method on a Java object. |
---|
89 | <pre> |
---|
90 | (setq x (jnew (jconstructor "java.lang.String" "java.lang.String") "this is a test")) => |
---|
91 | #<JAVAOBJECT [java.lang.String] this is a test> |
---|
92 | |
---|
93 | (defconstant length-method (jmethod "java.lang.String" "length")) => |
---|
94 | LENGTH-METHOD |
---|
95 | |
---|
96 | (jcall length-method x) => |
---|
97 | 14</pre> |
---|
98 | </dl> |
---|
99 | </body> |
---|
100 | </html> |
---|