MacroPackage: net.jlinkerToCDocOverviewCGDocRelNotesFAQIndexPermutedIndex
Allegro CL version 10.0
Unrevised from 9.0 to 10.0.
9.0 version


Arguments: lisp-name (lisp-class &rest argtypes)

This macro defines a Lisp function that calls a Java constructor. The first argument is the name of the new Lisp function. The second argument is an argument list where the first item is the Lisp name of a class previously defined with def-java-class. The Lisp name is defined as a function of n arguments, where n is the number of argtypes specified. Each argtype is a string or symbol that denotes a Java class. The Lisp class must be defined to represent exactly one Java class. If the Lisp class was defined to represent more than one Java class, an error is signaled when the macro is expanded.


(def-java-class (string-buffer "java.lang.StringBuffer")
    ((source :initform "Java")))

(def-java-constructor new-string-buffer-int (string-buffer "int"))

This form defines a Lisp function new-string-buffer-int that calls Java to create an instance of the Java class java.lang.StringBuffer, and returns a remote reference to the instance. The remote reference will be a Lisp instance of the class string-buffer.

The constructor is called as an ordinary Lisp function:

(new-string-buffer-int 17)

is an example of such a call.

(def-java-constructor new-string-buffer-str 
    (string-buffer "java.lang.String"))

This form defines another Lisp function (new-string-buffer-str that calls a different constructor of the java.lang.StringBuffer class. The Lisp function must have a different name because the constructors are ordinary functions, not generic functions, and thus cannot be overloaded in any way.

The constructor is also called as an ordinary Lisp function:

(new-string-buffer-str "abc")

See jlinker.htm for more information on the jLinker facility.

Copyright (c) 1998-2019, Franz Inc. Oakland, CA., USA. All rights reserved.
This page was not revised from the 9.0 page.
Created 2015.5.21.

Allegro CL version 10.0
Unrevised from 9.0 to 10.0.
9.0 version